什么是glVertexAttrib(与glVertexAttribPointer相比)?

Lau*_*ves 24 opengl-es opengl-es-2.0

据我所知,glVertexAttribPointer它将根据指向数组设置顶点属性的值.什么是glVertexAttrib对,但?看起来它只是为顶点属性设置了一个(可能是矢量)值,那么当你有多个顶点时会发生什么?所有顶点最终都会看到属性的相同值吗?

Chr*_*ica 43

这主要用于旧的立即模式(glBegin/glEnd),你不使用顶点数组,这是不推荐使用的(并在OpenGL ES 2.0和桌面OpenGL 3+核心中删除).

但是这个函数仍然可以用于数组(这就是它在现代版本中仍然存在的原因).假设此调用后的所有顶点对此属性具有相同的值(当然,仅当您未启用此属性的数组时),这是正确的.或者更准确地说,没有启用相应数组的每个已使用着色器属性都会从单个状态值中获取其值,并且可以使用此值更改此值glVertexAttrib.

如果您有一个带有例如颜色属性和位置属性的常规着色器并且您有一个具有恒定颜色的对象,那么这很有用.因此,通过使用glVertexAttrib您既不必为每个顶点提交颜色,也不必使用颜色更改为均匀的特殊着色器.

  • 使用单一颜色就是一个很好的例子.谢谢! (2认同)