下面是使用OpenGL绘制五星红旗的代码:
```
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
// 绘制红色背景
glColor3f(1, 0, 0);
glBegin(GL_POLYGON);
glVertex2f(-1, -0.5);
glVertex2f(-1, 0.5);
glVertex2f(1, 0.5);
glVertex2f(1, -0.5);
glEnd();
// 绘制大五角星
glColor3f(1, 1, 1);
glBegin(GL_POLYGON);
glVertex2f(-0.3, 0.15);
glVertex2f(-0.1, 0.45);
glVertex2f(0.1, 0.45);
glVertex2f(0.3, 0.15);
glVertex2f(0, -0.15);
glEnd();
// 绘制小五角星
glBegin(GL_POLYGON);
glVertex2f(0.05, 0.35);
glVertex2f(-0.05, 0.35);
glVertex2f(-0.2, 0.2);
glVertex2f(-0.35, 0.35);
glVertex2f(-0.55, 0.35);
glVertex2f(-0.4, 0.15);
glVertex2f(-0.5, -0.05);
glVertex2f(-0.3, 0);
glVertex2f(-0.1, -0.05);
glVertex2f(-0.2, 0.15);
glEnd();
// 绘制小五角星
glBegin(GL_POLYGON);
glVertex2f(-0.2, 0.15);
glVertex2f(-0.1, -0.05);
glVertex2f(0.1, -0.05);
glVertex2f(0.2, 0.15);
glVertex2f(0, 0);
glEnd();
// 绘制小五角星
glBegin(GL_POLYGON);
glVertex2f(0.2, 0.15);
glVertex2f(0.1, -0.05);
glVertex2f(0.3, -0.05);
glVertex2f(0.4, 0.15);
glVertex2f(0.25, 0.05);
glVertex2f(0.35, 0.25);
glVertex2f(0.2, 0.35);
glVertex2f(0.05, 0.25);
glVertex2f(0.15, 0.05);
glEnd();
// 刷新屏幕
glutSwapBuffers();
}
int main(int argc, char** argv)
{
// 初始化GLUT和窗口
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("Five-star Red Flag");
// 设置OpenGL状态
glClearColor(1, 1, 1, 0);
// 注册回调函数
glutDisplayFunc(display);
// 进入主循环
glutMainLoop();
return 0;
}
```