📜  如何在 OpenGL 中绑定 VAO (1)

📅  最后修改于: 2023-12-03 15:08:43.815000             🧑  作者: Mango

如何在 OpenGL 中绑定 VAO

在 OpenGL 中,VAO(Vertex Array Object)是存储顶点属性的缓冲区对象。绑定 VAO 可以将顶点数据与着色器进行连接,并在渲染时使用。

创建 VAO

使用 glGenVertexArrays 函数创建一个 VAO,并返回一个 VAO 的 ID。我们可以使用这个 ID 来引用这个 VAO。

GLuint vao;
glGenVertexArrays(1, &vao);
绑定 VAO

要绑定 VAO,使用 glBindVertexArray 函数,并传递要绑定的 VAO 的 ID。

glBindVertexArray(vao);
配置顶点属性指针

在绑定 VAO 之后,我们需要配置用于渲染的顶点属性指针。这可以通过 glVertexAttribPointer 函数完成。

例如:

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);

这行代码的作用是将顶点属性指针绑定到位置 0 的顶点属性,并为每个顶点使用三个 float 值。第 4 个参数表示我们不需要将数据标准化。第 5 个参数是 stride,也就是每个顶点属性之间的偏移量。最后一个参数表示每个顶点属性的起始地址。

启用顶点属性

在完成顶点属性指针的配置后,我们需要启用每个顶点属性。启用它们可以通过 glEnableVertexAttribArray 函数完成。

例如:

glEnableVertexAttribArray(0);

这行代码会启用位置 0 的顶点属性。

渲染

现在已经准备好了渲染数据。在设置好 VAO 和顶点属性之后,我们使用 glDrawArrays 或 glDrawElements 函数进行渲染。

例如:

glDrawArrays(GL_TRIANGLES, 0, numVertices);

这行代码表示使用顶点数组中的顶点渲染三角形。第二个参数表示要渲染的顶点的起始索引,第三个参数表示要渲染的顶点的数量。

取消绑定 VAO

当 VAO 不再使用时,我们需要取消绑定它。这可以通过将 VAO 绑定到 ID 0 来完成。

例如:

glBindVertexArray(0);

这行代码将取消当前绑定的 VAO。

总结

以上是使用 OpenGL 绑定 VAO 的步骤。首先,使用 glGenVertexArrays 函数创建一个 VAO,并使用 glBindVertexArray 函数绑定它。然后,使用 glVertexAttribPointer 函数配置顶点属性指针,并使用 glEnableVertexAttribArray 函数启用每个顶点属性。最后,使用 glDrawArrays 或 glDrawElements 函数渲染数据,并使用 glBindVertexArray(0) 函数取消绑定 VAO。