我对创建顶点数组对象(VAO)的意义感到困惑:
glGenVertexArrays(GLsizei n, GLuint *arrays);
和
glBindVertexArray(GLuint);
即使我没有创建VAO,我仍然可以创建缓冲对象(例如顶点),并使用glVertexAttribPointer
和glEnableVertexAttribArray
描述该缓冲对象。
我的问题是,如果您不必实际创建VAO来描述缓冲对象中的数据,那么诸如《OpenGL超级圣经第5版》之类的资料为什么在创建VBO时还包括调用创建VAO的函数呢?它们只用于我尚未发现的更高级主题吗?还是我完全弄错了?
另外,我是在阅读维基百科关于VBO及其示例代码时遇到这个问题的,其中没有调用glGenVertexArrays()
函数,但他们仍然使用glVertexAttribPointer()
进行数据描述。维基百科VBO页面 --
创建VAO的示例是用于什么目的?