请将这两段代码集合起来发给我
时间: 2024-03-26 07:35:19 浏览: 24
好的,以下是集成代码:
```c
#include <GL/glut.h>
int lastX = -1, lastY = -1;
float angleX = 0.0, angleY = 0.0;
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -5.0);
glRotatef(angleX, 0.0, 1.0, 0.0);
glRotatef(angleY, 1.0, 0.0, 0.0);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glVertex3f(1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, -1.0, 1.0);
glEnd();
glutSwapBuffers();
}
void onMouseMove(int x, int y) {
if (lastX == -1 && lastY == -1) {
lastX = x;
lastY = y;
return;
}
float deltaX = x - lastX;
float deltaY = y - lastY;
angleX += deltaX;
angleY += deltaY;
lastX = x;
lastY = y;
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutCreateWindow("Pyramid");
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(display);
glutMotionFunc(onMouseMove);
glutMainLoop();
return 0;
}
```
这段代码绘制了一个三棱锥,并添加了鼠标控制的旋转交互。当鼠标移动时,onMouseMove函数跟踪鼠标当前和上一帧的位置,并计算鼠标移动的距离。然后将其转换为旋转角度,并使用glRotatef函数将三棱锥旋转相应的角度。glutMotionFunc函数用于注册鼠标移动事件。同时,使用glutInitDisplayMode函数启用深度测试,以确保三棱锥的深度正确排序。
希望这个回答对您有所帮助!