opengl画一个黑色的圆
时间: 2023-12-18 09:03:32 浏览: 26
以下是使用 OpenGL 在窗口中绘制一个黑色圆的示例代码(使用 C++):
```cpp
#include <GL/glut.h>
#include <cmath>
void drawCircle(int x, int y, int radius) {
glPushMatrix();
glTranslatef(x, y, 0.0f);
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.0f, 0.0f, 0.0f); // 设置颜色为黑色
glVertex2f(0.0f, 0.0f); // 圆心点
int numSegments = 100;
GLfloat angle;
for (int i = 0; i <= numSegments; i++) { // 循环绘制所有的三角形片段
angle = i * 2.0f * PI / numSegments;
glVertex2f(cos(angle) * radius, sin(angle) * radius);
}
glEnd();
glPopMatrix();
}
void drawScene() {
glClear(GL_COLOR_BUFFER_BIT);
drawCircle(150, 150, 100); // 绘制半径为 100 的黑色圆
glutSwapBuffers();
}
void setup() {
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 设置背景颜色为白色
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL Circle");
glutDisplayFunc(drawScene);
setup();
glutMainLoop();
return 0;
}
```
这里使用的是 GL_TRIANGLE_FAN 模式绘制圆,将圆心点作为第一个顶点,然后根据圆上的点逐个绘制三角形片段。绘制的圆心点坐标为 (x, y),半径为 radius。setColor3f() 设置颜色为黑色。在 main() 函数中,我们设置背景颜色为白色,并调用 glutMainLoop() 开始循环渲染场景。