【发布时间】:2012-12-24 08:25:41
【问题描述】:
我正在使用 OpenGL 编写一个小图形引擎(通过 OpenTK 和 C#)。
为了定义顶点属性,我有一个 VertexDeclaration 类,其中包含一组 VertexElement 结构,这些结构映射到 glEnableVertexAttribArray/glVertexAttribPointer 调用。
另外,为了支持多个顶点流,我有一个特殊的结构来保存顶点缓冲区、顶点声明、顶点偏移和实例频率(如 XNA 的 VertexBufferBinding 结构)。
目前,每当调用绘图调用时,我都会遍历所有设置的顶点流并 绑定它们的顶点缓冲区,应用顶点声明,禁用未使用的顶点属性并绘制图元。
我想使用 VAO 将 glEnableVertexAttribArray 调用缓存到其中, 并且每当应用顶点流时,绑定 VAO 并更改其数组缓冲区绑定。
这是对 VAO 的正确用法吗?
【问题讨论】:
-
看来this question 是一个有用的链接。不知道为什么答案对“缓存”
glEnableVertexAttribArray调用说“不”。链接问题“何时致电glVertexAttribPointer?”的答案说这正是 VAO 的用途,也是当今推荐的方法。
标签: opengl