opengl键盘画直线和圆
时间: 2023-11-09 07:12:19 浏览: 163
在OpenGL中,可以使用键盘事件来绘制直线和圆。
绘制直线的方法:
1. 在OpenGL窗口中注册键盘事件。
2. 在键盘事件处理函数中,获取按下的键盘键,并根据键盘键的不同来绘制直线。
3. 绘制直线的方法是通过调用OpenGL的绘制函数glBegin和glEnd,以及glVertex函数来实现。
以下是绘制直线的示例代码:
```c++
void drawLine(float x1, float y1, float x2, float y2)
{
glBegin(GL_LINES);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case '1':
drawLine(-0.5f, 0.0f, 0.5f, 0.0f); // 绘制一条水平线
break;
case '2':
drawLine(0.0f, -0.5f, 0.0f, 0.5f); // 绘制一条竖直线
break;
case '3':
drawLine(-0.5f, -0.5f, 0.5f, 0.5f); // 绘制一条斜线
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL Line Drawing");
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
```
绘制圆的方法:
1. 在OpenGL窗口中注册键盘事件。
2. 在键盘事件处理函数中,获取按下的键盘键,并根据键盘键的不同来绘制圆。
3. 绘制圆的方法是通过调用OpenGL的绘制函数glBegin和glEnd,以及glVertex和glColor函数来实现。
以下是绘制圆的示例代码:
```c++
void drawCircle(float x, float y, float radius)
{
int num_segments = 100;
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f, 0.0f, 0.0f); // 设置颜色为红色
glVertex2f(x, y); // 圆心坐标
for (int i = 0; i <= num_segments; i++)
{
float angle = i * 2.0f * PI / num_segments; // 计算出每个点的角度
float dx = radius * cosf(angle); // 计算出每个点的x坐标
float dy = radius * sinf(angle); // 计算出每个点的y坐标
glVertex2f(x + dx, y + dy); // 绘制每个点
}
glEnd();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case '4':
drawCircle(0.0f, 0.0f, 0.5f); // 绘制一个半径为0.5的圆
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL Circle Drawing");
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
```
阅读全文