【发布时间】:2016-09-26 20:16:27
【问题描述】:
当我说存储布局时,我的意思是我用glVertexAttribPointer 定义的。这个状态是保存在当前绑定的 VAO 中还是我绑定到 GL_ARRAY_BUFFER 的缓冲区中?
【问题讨论】:
标签: opengl vertex-buffer vertex-array vertex-attributes vertex-array-object
当我说存储布局时,我的意思是我用glVertexAttribPointer 定义的。这个状态是保存在当前绑定的 VAO 中还是我绑定到 GL_ARRAY_BUFFER 的缓冲区中?
【问题讨论】:
标签: opengl vertex-buffer vertex-array vertex-attributes vertex-array-object
您不能在一个 VAO 中拥有多个“存储布局”。这与您不能在一个纹理对象中拥有多个纹理的原因相同。或一个缓冲区对象中的多个缓冲区。以此类推。
VAO 是“存储布局”。因此,如果您需要多个布局,那么您需要多个 VAO。
或者你可以修改现有VAO的状态;它们不是一成不变的。但这有点违背了 VAO 的目的。
【讨论】:
glVertexAttribPointer 更改了 VAO 状态,但在渲染过程中仍然可以找到标准属性。这怎么可能?
您给 glVertexAttribPointer 的“描述”存储在 VAO 状态中。
因此,对于同一个 VBO,您可以在同一个 VAO 或其他 VAO 的不同属性中对其进行不同的设置。
【讨论】: