使用OpenGL的glfw创建一个vbo并且每段代码都加上注释
时间: 2024-06-09 08:08:42 浏览: 162
以下是使用OpenGL的glfw创建一个vbo,并加上注释的代码示例:
```c++
#include <GLFW/glfw3.h> // 引入glfw库
#include <iostream>
int main()
{
GLFWwindow* window; // 定义窗口指针
/* 初始化glfw */
if (!glfwInit())
return -1;
/* 创建窗口 */
window = glfwCreateWindow(640, 480, "VBO Example", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* 设置当前窗口上下文 */
glfwMakeContextCurrent(window);
/* 定义顶点坐标数组 */
GLfloat vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
GLuint vbo; // 定义vbo
glGenBuffers(1, &vbo); // 生成vbo
/* 绑定vbo */
glBindBuffer(GL_ARRAY_BUFFER, vbo);
/* 设置vbo的数据 */
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
/* 主循环 */
while (!glfwWindowShouldClose(window))
{
/* 渲染 */
glClear(GL_COLOR_BUFFER_BIT);
/* 启用顶点属性 */
glEnableVertexAttribArray(0);
/* 设置顶点属性指针 */
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
/* 绘制三角形 */
glDrawArrays(GL_TRIANGLES, 0, 3);
/* 禁用顶点属性 */
glDisableVertexAttribArray(0);
/* 交换缓冲区 */
glfwSwapBuffers(window);
/* 处理事件 */
glfwPollEvents();
}
/* 清理vbo */
glDeleteBuffers(1, &vbo);
/* 清理glfw */
glfwTerminate();
return 0;
}
```
注释已经加在代码中,可以更好地理解每段代码的作用。
阅读全文