利用OpenGL不同颜色绘制大小从1到5的5个点。
时间: 2024-11-05 19:30:49 浏览: 8
实验1:搭建OpenGL环境&&绘制窗口_OpenGL;绘制窗口_
在OpenGL中,你可以通过设置顶点数据、颜色和基本渲染状态来绘制不同颜色和大小的点。这里是一个简单的步骤:
1. 首先,创建一个VBO (Vertex Buffer Object) 来存储点的数据,每个点包含位置(x, y, z) 和颜色(r, g, b, a)。因为大小在这里是通过点的位置变化来表示,我们可以保持尺寸固定,比如(1, 0, 0)代表大小1,(2, 0, 0)代表大小2,依此类推。
```cpp
// 点的坐标和颜色数组
float vertices[] = {
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // size 1, red
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // size 2, green
0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f, // size 3, blue
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, // size 4, yellow
-0.5f, -0.5f, 0.0f, 0.5f, 0.5f, 0.5f, // size 5, magenta
};
```
2. 创建并绑定VBO,并设置顶点数据。
```cpp
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
```
3. 设置颜色着色器变量和顶点属性。
```cpp
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0); // position
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float))); // color
```
4. 定义着色器程序,设置对应的颜色着色器函数(例如,使用顶点颜色模式)。
5. 渲染循环内,每次调用`glDrawArrays()`来绘制点,传入相应的索引范围,如`glDrawArrays(GL_POINTS, 0, 5)`,这将绘制五个大小不同、颜色各异的点。
阅读全文