请使用OpenGL和GLUT编写一个简单的图形程序,用于显示一个填充的红色正三角形。其中正三角形的左下角顶点(一0.5,0),右下角顶点是(0.5,0),程序窗口大小为(200,200),为“红色正三角形”。
时间: 2024-11-03 20:24:12 浏览: 25
在OpenGL和GLUT环境中创建一个简单的填充红色正三角形程序,首先需要设置基本的环境并初始化GLUT库。以下是一个基础的步骤概述:
1. **包含头文件**:
```c++
#include <GL/glut.h>
```
2. **初始化函数** (`void init();`):
设置视口、清除颜色和深度缓冲区,以及指定颜色模式为RGB,将背景设为黑色。
```c++
void init() {
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glEnable(GL_DEPTH_TEST);
glClearDepth(1.0);
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
}
```
3. **绘制函数** (`void display();`):
这里我们使用glBegin(GL_TRIANGLES)开始一个三角形列表,然后定义三个顶点的坐标,最后用glEnd()结束顶点列表。每个顶点都乘以一个小于1的值来限制在窗口内,并设置颜色为红色。
```c++
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0); // 红色
glBegin(GL_TRIANGLES);
glVertex2f(-0.5, 0); // 左下角
glVertex2f(0.5, 0); // 右下角
glVertex2f(0, 0.866); // 上角 (0.5 * √3)
glEnd();
glutSwapBuffers();
}
```
4. **主程序循环** (`int main(int argc, char** argv);`):
初始化GLUT,设置窗口大小,注册回调函数,然后进入无限循环调用display函数更新画面。
```c++
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(200, 200);
glutCreateWindow("红色正三角形");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
阅读全文