什么是顶点步幅?

时间:2014-11-30 04:34:03

标签: android opengl-es

官方Drawing Shapes教程页面中的最后一段代码使用名为vertexStride的变量,但不解释它是什么或来自何处。 the method it's passed to也没有文档。

我查看sample code并找到了这些声明:

private final int vertexCount = triangleCoords.length / COORDS_PER_VERTEX;
private final int vertexStride = COORDS_PER_VERTEX * 4; // 4 bytes per vertex

我不知道为什么这些不是static,但这不是重点。从这里我收集vertexStride是字节缓冲区中一个顶点记录的长度,它是每个坐标4个字节(不是每个顶点,如注释所示),因为它们实际上是32位浮点值。这是对的吗?

< rhetorical>仅仅是我,还是谷歌在本教程中投入了大约零努力?< / rhetorical>

2 个答案:

答案 0 :(得分:1)

" stride"通常是指数组中元素的间距,这可能并不总是与存储元素的内在大小相同。在vertexStride的情况下,它是用于在数组中存储顶点的大小(以字节为单位)。以下是OpenGL的glVertexAttribPointer文档。如您所述,这与顶点大小本身(坐标数* 4)相同。它是4,因为它们被float存储为type参数,在您链接的示例代码中为GL_FLOAT

答案 1 :(得分:0)

Stride是从一个项目的开头到下一个项目的开头的距离。

在这种情况下,顶点到下一个顶点之间的距离是COORDS_PER_VERTEX * 4 = 12个字节。