opengl绘制五角星
时间: 2023-06-19 10:04:42 浏览: 214
opengl五角星绘制
下面是使用OpenGL绘制五角星的示例代码:
```c++
#include <GL/glut.h>
#include <math.h>
void drawStar(float x, float y, float radius) {
const float PI = 3.14159265358979323846;
const float angle = PI / 5.0;
glBegin(GL_LINE_LOOP);
for (int i = 0; i < 5; i++) {
glVertex2f(x + radius * sin(i * 2 * angle), y + radius * cos(i * 2 * angle)); // 外圆上的点
glVertex2f(x + radius / 2.0 * sin((2 * i + 1) * angle), y + radius / 2.0 * cos((2 * i + 1) * angle)); // 内圆上的点
}
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f);
drawStar(0.0f, 0.0f, 0.5f);
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL Five-pointed Star");
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
这段代码使用OpenGL的`GL_LINE_LOOP`模式绘制五角星,绘制顺序如下:
1. 计算五角星外圆上的点和内圆上的点;
2. 使用`GL_LINE_LOOP`模式绘制五角星。
在`display()`函数中调用`drawStar()`函数绘制五角星。在`main()`函数中使用OpenGL进行初始化,并调用`glutMainLoop()`启动主循环。最终在窗口中显示绘制的五角星。
阅读全文