#include #include float angle = 0.0f; // 旋转角度 void display() { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // 旋转中心在原点 glPushMatrix(); glRotatef(angle, 0.0f, 0.0f, 1.0f); // Z轴旋转 // 绘制彩色三角形 glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); // 红 glVertex2f(-0.6f, -0.6f); glColor3f(0.0f, 1.0f, 0.0f); // 绿 glVertex2f(0.6f, -0.6f); glColor3f(0.0f, 0.0f, 1.0f); // 蓝 glVertex2f(0.0f, 0.8f); glEnd(); glPopMatrix(); glutSwapBuffers(); } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); // 坐标系范围 } void timer(int value) { angle += 1.0f; // 每帧旋转1度 if(angle > 360.0f) angle -= 360.0f; glutPostRedisplay(); // 触发重绘 glutTimerFunc(16, timer, 0); // 约60FPS } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(600, 600); glutCreateWindow("Rotating Triangle"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutTimerFunc(0, timer, 0); // 启动定时器 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // 黑色背景 glutMainLoop(); return 0; }