glVertexAttribPointer 步幅参数如何工作?

How does the glVertexAttribPointer stride parameter work?

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

从上一个顶点开始算起。

但是stride == 0是一个特例,它意味着你的属性是紧密包装的。所以例如如果每个顶点传递 dvec4(4 个双精度向量),则使用 032(如果 sizeof(double) * 4 == 32)并不重要。