官方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>
答案 0 :(得分:1)
" stride"通常是指数组中元素的间距,这可能并不总是与存储元素的内在大小相同。在vertexStride
的情况下,它是用于在数组中存储顶点的大小(以字节为单位)。以下是OpenGL的glVertexAttribPointer
文档。如您所述,这与顶点大小本身(坐标数* 4)相同。它是4,因为它们被float
存储为type
参数,在您链接的示例代码中为GL_FLOAT
。
答案 1 :(得分:0)
Stride是从一个项目的开头到下一个项目的开头的距离。
在这种情况下,顶点到下一个顶点之间的距离是COORDS_PER_VERTEX * 4 = 12个字节。