openGL 3.1 是否支持实例化?

Is instancing supported in openGL 3.1?

所以 glVertexAttribDivisor 似乎在 3.3 中得到了支持。我的显卡仅部分支持 3.3,您需要 glVertexAttribDivisor 函数来实例化吗?是否以其他方式支持实例化,因为 glVertexAttribDivisor 函数在我的显卡上不起作用?

您的 GL 实现可能支持 ARB_instanced_arrays 扩展。

glVertexAttribDivisor() 不是实例化的必要条件。它增加了每个实例推进顶点属性的可能性。没有它,所有属性将照常按顶点推进。

这意味着您将为顶点着色器中的所有实例获得相同的顶点属性值。每个实例你想要做的不同的事情都必须关闭内置的 gl_InstanceID 变量。

例如,如果您想在顶点着色器中使用每个实例值,则可以将它们存储在统一缓冲区中。在着色器中,然后定义一个包含数组的统一块,并通过使用 gl_InstanceID.

索引该数组来访问每个实例的值