openGL绘制奥运五环
时间: 2023-11-24 14:45:15 浏览: 310
opengl 实现的五环动画效果
以下是使用OpenGL绘制奥运五环的示例代码:
```c++
#include <gl/glut.h>
void init() {
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 400.0, 0.0, 400.0);
}
void drawCircle(float x, float y, float radius, float r, float g, float b) {
int triangleAmount = 100; // 分割三角形数量,值越大圆形越精细
GLfloat twicePi = 2.0f * 3.14159265358979323846;
glColor3f(r, g, b);
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x, y);
for (int i = 0; i <= triangleAmount; i++) {
glVertex2f(
x + (radius * cos(i * twicePi / triangleAmount)),
y + (radius * sin(i * twicePi / triangleAmount))
);
}
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
drawCircle(100.0, 250.0, 50.0, 0.0, 0.0, 1.0); // 蓝色
drawCircle(200.0, 250.0, 50.0, 1.0, 1.0, 1.0); // 白色
drawCircle(300.0, 250.0, 50.0, 1.0, 0.0, 0.0); // 红色
drawCircle(150.0, 200.0, 50.0, 1.0, 1.0, 0.0); // 黄色
drawCircle(250.0, 200.0, 50.0, 0.0, 1.0, 0.0); // 绿色
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL Olympic Rings");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
运行以上代码,将得到一个简单的OpenGL奥运五环示例。在这个示例中,我们定义了一个`drawCircle`函数来绘制圆形,然后在`display`函数中调用它五次来绘制五个奥运五环。每个圆使用不同的颜色,而白色圆则使用默认的背景颜色。
阅读全文