我对生成/创建顶点数组对象(VAO)的观点感到困惑:
glGenVertexArrays(GLsizei n, GLuint *arrays);
和
glBindVertexArray(GLuint);
因为我仍然可以创建一个缓冲区对象,比如顶点,并在创建glVertexAttribPointer
和glEnableVertexAttribArray
不创建 VAO 的情况下描述该缓冲区对象。
我的问题是,如果您不必实际创建 VAO 来描述缓冲区对象中的数据,为什么像 OpenGL SuperBible 5ed 这样的源会在创建 VBO 时包含创建 VAO 的调用?它们是否仅用于我尚未发现的更高级的主题,我是否完全糊涂了?
此外,我在阅读关于 VBO 的维基百科条目时第一次遇到这个问题,他们的示例代码不包括对的调用,glGenVertexArrays()
但他们仍然用glVertexAttribPointer()
. Wiki VBO 条目——
出于什么原因创建 VAO 的示例?