学习并尝试使用glutInitDisplayMode、glBegin函数中包含的不同模型类型,或者画出一个简单的彩虹形状
时间: 2024-10-21 15:04:39 浏览: 35
OpenGL是一个强大的图形库,用于渲染3D图形。`glutInitDisplayMode` 和 `glBegin` 都是其核心部分。
`glutInitDisplayMode` 是一个初始化函数,用于设置窗口的基本属性,如颜色模式(`GLUT_SINGLE` 或 `GLUT_DOUBLE`)、深度缓冲等。例如,你可以设置它为双缓冲模式以便更平滑地显示动画:
```cpp
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
```
`glBegin` 是一个命令,用于开始一个新的几何对象绘制。它定义了一个基本的绘图模式,常见的模型类型有:
1. `GL_POINTS`:表示单个点。
2. `GL_LINES`:绘制线段。
3. `GL_LINE_LOOP`:连续的线段形成闭合环。
4. `GL_LINE_STRIP`:类似线环,但最后一段不会闭合。
5. `GL_TRIANGLES`:绘制三角形。
6. `GL_QUADS`:四边形。
7. `GL_POLYGON`: 多边形。
如果你想画出一个彩虹形状,通常我们会使用渐变的颜色和三角形或者线条。比如,可以创建一系列不同颜色的三角形,然后按照一定角度排列,模拟彩虹效果。
下面是一个简单的示例,使用`glBegin`和`glEnd`绘制彩虹线条:
```cpp
// 初始化颜色数组
static GLfloat colors[3][7] = {
{1.0f, 0.0f, 0.0f}, // 红色
{1.0f, 1.0f, 0.0f}, // 黄色
{0.0f, 1.0f, 0.0f} // 绿色
};
for (int i = 0; i < 7; ++i) {
glColor3fv(colors[i % 3]); // 循环颜色数组
glBegin(GL_LINES);
glVertex2f(-1.0f, -1.0f + sin(i * M_PI / 3.0f)); // 彩虹弧度变化
glVertex2f(1.0f, -1.0f + sin(i * M_PI / 3.0f));
glEnd();
}
```
阅读全文