opengl键盘绘制直线和圆
时间: 2023-10-27 17:04:56 浏览: 180
opengl画圆和直线.rar_C# 画圆_bresenham openGL_opengl vc
OpenGL是一个图形库,它提供了一些简单的函数来绘制基本的图形,包括直线和圆。
绘制直线可以使用glBegin和glEnd函数,其中glBegin指定绘制的图形类型,glEnd表示完成绘制。在这两个函数之间,使用glVertex2f指定每个点的坐标。
绘制圆可以使用glBegin和glEnd函数,其中glBegin指定绘制的图形类型。在这两个函数之间,使用glVertex2f指定每个点的坐标,这些点组成了一个圆的近似多边形。为了使圆更圆滑,可以增加多边形的边数。
下面是一个使用OpenGL绘制直线和圆的示例程序:
```c++
#include <GL/glut.h>
#include <math.h>
void init() {
glClearColor(1.0, 1.0, 1.0, 1.0); // 设置背景颜色为白色
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 640, 0, 480); // 设置投影模式为正交投影
}
void drawLine() {
glBegin(GL_LINES); // 指定绘制类型为直线
glVertex2f(100, 100); // 第一个点的坐标
glVertex2f(200, 200); // 第二个点的坐标
glEnd(); // 完成绘制
}
void drawCircle() {
const float PI = 3.1415926;
const int sides = 32; // 圆的边数
const float radius = 50; // 圆的半径
glBegin(GL_POLYGON); // 指定绘制类型为多边形
for (int i = 0; i < sides; i++) {
float angle = 2 * PI * i / sides;
float x = radius * cos(angle) + 100; // 圆心坐标为(100, 100)
float y = radius * sin(angle) + 100;
glVertex2f(x, y);
}
glEnd(); // 完成绘制
}
void display() {
glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓存区
glColor3f(0.0, 0.0, 0.0); // 设置绘制颜色为黑色
drawLine(); // 绘制直线
drawCircle(); // 绘制圆
glFlush(); // 刷新缓存区
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL Example");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
在上面的程序中,使用glut库创建了一个窗口,并设置了绘制函数为display。在display函数中,先使用glClear函数清除颜色缓存区,然后设置绘制颜色为黑色,调用drawLine和drawCircle函数绘制直线和圆,最后使用glFlush函数刷新缓存区。在主函数中,使用glutMainLoop函数进入事件循环,等待窗口事件的发生。
注意,在编译时需要链接glut库和OpenGL库。例如,在Linux系统中,可以使用以下命令编译程序:
```
g++ -o example example.cpp -lglut -lGL
```
阅读全文