C++:OpenGl画圆
时间: 2023-11-14 14:58:43 浏览: 317
以下是使用OpenGL画圆的C++代码示例:
```c++
#include <GL/glut.h>
#include <cmath>
// 定义圆心坐标和半径
GLfloat x = 0.0f;
GLfloat y = 0.0f;
GLfloat radius = 0.5f;
void drawCircle()
{
// 设置画笔颜色
glColor3f(1.0f, 1.0f, 1.0f);
// 绘制圆形
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x, y); // 圆心点
for (int i = 0; i <= 360; i++)
{
GLfloat angle = i * 3.1415926f / 180.0f;
GLfloat dx = radius * cosf(angle);
GLfloat dy = radius * sinf(angle);
glVertex2f(x + dx, y + dy);
}
glEnd();
}
void display()
{
// 清除颜色缓冲区
glClear(GL_COLOR_BUFFER_BIT);
// 绘制圆形
drawCircle();
// 刷新显示缓冲区
glutSwapBuffers();
}
int main(int argc, char **argv)
{
// 初始化GLUT库
glutInit(&argc, argv);
// 创建窗口
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(400, 400);
glutCreateWindow("Circle");
// 设置窗口背景颜色
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
// 设置投影矩阵
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
// 注册回调函数
glutDisplayFunc(display);
// 进入主循环
glutMainLoop();
return 0;
}
```
该代码使用OpenGL的`glBegin()`和`glEnd()`函数绘制一个由多个三角形组成的圆形。其中,圆形的每个顶点坐标是通过圆心坐标、半径和角度计算得到的。圆形的绘制通过`drawCircle()`函数实现。在`main()`函数中,使用`glutInit()`初始化GLUT库,创建窗口并设置窗口背景颜色,设置投影矩阵,注册回调函数,并进入主循环。
阅读全文