Tag: vao

OpenGL VAO最佳实践

我面临一个问题,我认为是VAO依赖,但我不知道.. 我不确定VAO的正确用法,在GL初始化过程中我曾经做过的事情很简单 glGenVertexArrays(1,&vao) 其次是一个 glBindVertexArray(vao) 后来,在我的绘图pipe道中,我只是调用glBindBuffer(),glVertexAttribPointer(),glEnableVertexAttribArray()等等..而不关心初始绑定的VAO 这是一个正确的做法吗?

什么是顶点数组对象?

我刚从本教程开始学习OpenGL: http : //openglbook.com/the-book/ 我到了第二章,画了一个三angular形,除了VAO,我明白了所有的一切(这个缩写是好的吗?)。 教程有这样的代码: glGenVertexArrays(1, &VaoId); glBindVertexArray(VaoId); 虽然我明白代码是必要的,但我不知道它做了什么。 尽pipe我从来没有使用VaoId(除了销毁它),但代码在没有它的情况下不能运行。 我假设这是因为它需要绑定,但我不知道为什么。 这个确切的代码是否需要成为每个OpenGL程序的一部分? 该教程将VAO解释为: 顶点数组对象(或VAO)是描述如何将顶点属性存储在顶点缓冲对象(或VBO)中的对象。 这意味着VAO不是存储顶点数据的实际对象,而是顶点数据的描述符。 顶点属性可以用glVertexAttribPointer函数及其两个姐妹函数glVertexAttribIPointer和glVertexAttribLPointer来描述,我们将在下面探讨其中的第一个。 我不明白VAO如何描述顶点属性。 我没有以任何方式描述它们。 它是否从glVertexAttribpointer获取信息? 我想这一定是它。 VAO只是来自glVertexAttribPointer的信息的目的地吗? 请注意,我接受的教程是否可以接受? 有什么我应该注意的或更好的教程要遵循?