c语言opengl五星红旗
时间: 2023-11-07 12:48:38 浏览: 327
以下是在C语言中使用OpenGL绘制五星红旗的示例代码:
```c
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT); //清空颜色缓冲区
glColor3f(1.0, 0.0, 0.0); //设置颜色为红色
//绘制红旗
glBegin(GL_QUADS);
glVertex2f(-1.0, -0.5);
glVertex2f(1.0, -0.5);
glVertex2f(1.0, 0.5);
glVertex2f(-1.0, 0.5);
glEnd();
glColor3f(1.0, 1.0, 1.0); //设置颜色为白色
//绘制五角星
glBegin(GL_POLYGON);
glVertex2f(-0.5, 0.15);
glVertex2f(-0.15, 0.15);
glVertex2f(0.0, 0.5);
glVertex2f(0.15, 0.15);
glVertex2f(0.5, 0.15);
glVertex2f(0.2, -0.1);
glVertex2f(0.3, -0.45);
glVertex2f(0.0, -0.25);
glVertex2f(-0.3, -0.45);
glVertex2f(-0.2, -0.1);
glEnd();
glFlush(); //强制刷新缓冲区,显示图形
}
int main(int argc, char** argv)
{
glutInit(&argc, argv); //初始化GLUT库
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式
glutInitWindowSize(400, 400); //设置窗口大小
glutCreateWindow("Five-star Red Flag"); //创建窗口
glClearColor(1.0, 1.0, 1.0, 0.0); //设置背景颜色为白色
glMatrixMode(GL_PROJECTION); //设置矩阵模式为投影矩阵
glLoadIdentity(); //重置当前矩阵为单位矩阵
gluOrtho2D(-1.0, 1.0, -1.0, 1.0); //设置投影矩阵
glutDisplayFunc(display); //注册回调函数
glutMainLoop(); //进入GLUT事件处理循环
return 0;
}
```
这段代码使用了OpenGL库中的一些基本函数,包括设置颜色、绘制图形等。在main函数中,我们首先初始化了GLUT库,然后设置了窗口大小和显示模式,并创建了窗口。接着,我们设置了背景颜色和投影矩阵,并注册了回调函数。最后,我们进入了GLUT事件处理循环,等待用户交互操作。在display函数中,我们使用glBegin和glEnd函数分别开始和结束了绘制图形的过程,并使用glVertex2f函数指定了每个顶点的坐标。在绘制五角星时,我们使用了多边形绘制函数glBegin(GL_POLYGON),将五角星的每个顶点依次连接起来。最后,我们使用glFlush函数强制刷新缓冲区,实现图形的显示。
阅读全文