openglc++画一个蓝色矩形
时间: 2024-09-17 12:06:29 浏览: 41
在OpenGL+C++中画一个蓝色的矩形,首先你需要设置颜色模式并创建顶点数组对象(VAO),然后定义顶点数据并指定着色器程序。下面是一个简单的步骤示例:
1. 包含必要的头文件:
```cpp
#include <GL/glut.h>
#include <GL/glu.h>
#include <GL/glcorearb.h>
```
2. 定义顶点坐标:
```cpp
const GLfloat vertices[] = {
-0.5f, -0.5f, 0.0f, // 左下角
0.5f, -0.5f, 0.0f, // 右下角
0.5f, 0.5f, 0.0f, // 右上角
-0.5f, 0.5f, 0.0f // 左上角
};
```
3. 设置着色器程序(假设已经有了一个蓝色顶点着色器和片段着色器):
```cpp
GLuint vao, shaderProgram;
glCreateVertexArrays(1, &vao);
glUseProgram(shaderProgram);
```
4. 绑定顶点数组和数据:
```cpp
glBindVertexArray(vao);
// 绑定顶点数据
glNamedBufferStorageEXT(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT);
glVertexArrayAttribBinding(vao, 0, GL_PER_VERTEX_DATA, 0); // 假设我们只有一个顶点属性
glVertexArrayElementBuffer(vao, GLuint(0)); // 将缓冲区绑定到元素数组
// 渲染前设置颜色
glUniform4fv(glGetUniformLocation(shaderProgram, "color"), 1, glm::value_ptr(glm::vec4(0.0f, 0.0f, 1.0f, 1.0f))); // 蓝色
```
5. 渲染矩形:
```cpp
glDrawArrays(GL_QUADS, 0, 4); // 使用四边形绘制
```
6. 清理资源:
```cpp
glDeleteVertexArrays(1, &vao);
glDeleteBuffers(1, &buffer);
glUseProgram(0);
```
阅读全文