opengl绘制正方形
时间: 2023-08-23 12:07:05 浏览: 175
要使用OpenGL绘制正方形,需要先设置OpenGL视口和投影矩阵,然后通过顶点数组指定正方形的顶点坐标,最后使用OpenGL的绘制函数进行渲染。下面是一个使用OpenGL ES 2.0绘制正方形的示例代码:
```c
// 顶点着色器代码
const char* vertexShaderCode =
"attribute vec4 a_Position;\n"
"void main() {\n"
" gl_Position = a_Position;\n"
"}\n";
// 片段着色器代码
const char* fragmentShaderCode =
"precision mediump float;\n"
"void main() {\n"
" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n"
"}\n";
// 正方形的顶点坐标
const float squareVertices[] = {
-0.5f, 0.5f, 0.0f, // 左上角
0.5f, 0.5f, 0.0f, // 右上角
-0.5f, -0.5f, 0.0f, // 左下角
0.5f, -0.5f, 0.0f // 右下角
};
// 加载着色器代码并编译链接着色器程序
GLuint program = createProgram(vertexShaderCode, fragmentShaderCode);
// 获取顶点位置属性的位置
GLint positionLocation = glGetAttribLocation(program, "a_Position");
// 创建并绑定VBO
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
// 将顶点坐标数据复制到VBO中
glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertices), squareVertices, GL_STATIC_DRAW);
// 启用顶点属性并指定顶点属性指针
glEnableVertexAttribArray(positionLocation);
glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
// 清空屏幕并设置背景颜色
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 绘制正方形
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
// 解绑VBO并禁用顶点属性
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(positionLocation);
```
其中,`createProgram`函数用于加载着色器代码并编译链接着色器程序,`glGetAttribLocation`函数用于获取顶点位置属性的位置,`glGenBuffers`和`glBindBuffer`函数用于创建并绑定VBO,`glBufferData`函数将顶点坐标数据复制到VBO中,`glEnableVertexAttribArray`和`glVertexAttribPointer`函数启用顶点属性并指定顶点属性指针,`glClearColor`和`glClear`函数用于清空屏幕并设置背景颜色,`glDrawArrays`函数用于绘制正方形,`glBindBuffer`和`glDisableVertexAttribArray`函数用于解绑VBO并禁用顶点属性。
阅读全文