用c++的OpenGL写一个四个面颜色不同的三棱锥绕轴旋转的代码
时间: 2024-05-08 07:18:58 浏览: 12
好的,下面是代码:
```c
#include <GL/glut.h>
GLfloat angle = 0.0;
void init() {
glEnable(GL_DEPTH_TEST);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0, 0.0, -6.0);
glRotatef(angle, 1.0, 1.0, 0.0);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0); // red
glVertex3f(-1.0, -1.0, 0.0);
glVertex3f(1.0, -1.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glColor3f(0.0, 1.0, 0.0); // green
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(1.0, -1.0, 0.0);
glVertex3f(1.0, 1.0, 2.0);
glColor3f(0.0, 0.0, 1.0); // blue
glVertex3f(1.0, 1.0, 2.0);
glVertex3f(-1.0, 1.0, 2.0);
glVertex3f(0.0, 1.0, 0.0);
glColor3f(1.0, 1.0, 0.0); // yellow
glVertex3f(-1.0, 1.0, 2.0);
glVertex3f(-1.0, -1.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();
glutSwapBuffers();
}
void timer(int value) {
angle += 2.0;
if (angle > 360) {
angle -= 360.0;
}
glutPostRedisplay();
glutTimerFunc(16, timer, 0);
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("Rotating Pyramid");
glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);
init();
glutMainLoop();
return 0;
}
```
这段代码使用 OpenGL 绘制一个四个面颜色不同的三棱锥,并围绕轴旋转,每次旋转角度 2 度。你可以在主函数中使用glutInitWindowSize()函数来调整窗口大小,也可以使用glRotate()函数来改变旋转轴。希望这段代码能够帮到你!