【发布时间】:2018-06-01 20:14:28
【问题描述】:
我一直在寻找将属性与任意顶点分组相关联的方法,起初实例化似乎是我完成此任务的唯一方法,但后来我偶然发现了 this question 和 this answer 状态:
然而,较新版本的 OpenGL 可以设置某个顶点属性的缓冲区偏移前进的速率。实际上,这意味着给定顶点数组的数据在属性的缓冲区偏移量增加之前复制到 n 个顶点。设置这个除数的函数是glVertexBindingDivisor。
(强调我的)
在我看来,答案似乎是我可以根据顶点数而不是实例数进行划分。但是,当我查看 glVertexBindingDivisor 的文档并将其与 glVertexAttribDivisor 的文档进行比较时,它们似乎都指的是发生在 instances 而不是 vertices 上的划分.例如在glVertexBindingDivisor 的文档中它指出:
glVertexBindingDivisor 和 glVertexArrayBindingDivisor 修改在单个绘制命令中渲染多个 实例 图元时通用顶点属性的前进速率。如果除数为零,则使用绑定到 bindingindex 的缓冲区的属性每个顶点都会前进一次。如果除数不为零,则属性会在被渲染的顶点集的每个除数实例中前进一次。如果相应的除数不为零,则属性称为instanced。
(强调我的)
那么这两个函数之间的实际区别是什么?
【问题讨论】:
标签: opengl vertex opengl-4 vertex-buffer vertex-attributes