glVertexAttribPointer 步幅参数如何工作?

Ser*_*ket 2 c c++ opengl glew

stride函数的参数是如何glVertexAttribPointer工作的?假设我有一个 64 字节大的缓冲区。我想存储 2 个顶点,每个顶点大小为 32 字节。如果顶点依次开始,stride参数需要是0还是32?我想说的是步幅参数是从最后一个顶点的开始还是从最后一个顶点的结束开始计数?

Hol*_*Cat 5

它从前一个顶点的起点开始计数。

stride == 0属于特例,说明你的属性是紧密包装的。因此,例如,如果您dvec4为每个顶点传递一个(4 个双精度向量的向量),则使用032(if sizeof(double) * 4 == 32) 并不重要。

  • 换句话说:您应该使用实际的步幅,*或*使用 0 作为特殊的快捷方式,这意味着没有间隙(步幅 = 大小) (2认同)