0
我有一个运行于每个顶点6个字节的一些打包的顶点数据:GLES2.0 glVertexAttribPointer:使用奇数Stride和Offset值的性能损失?
glVertexAttribPointer Shader.pos3d_loc, 3, GL_UNSIGNED_BYTE, True, 6, 0
glVertexAttribPointer Shader.norm_loc, 3, GL_UNSIGNED_BYTE, True, 6, 3
是否有通过使用不的4个字节的倍数的进步和偏移引起的任何性能损失(如隐藏的内存拷贝)?
此时不做任何复制。您可以将数据复制到顶点缓冲区,或者根据需要逐个访问这些值。这些值只是告诉openGL如何解释你的缓冲区。例如normal [i] .x =(float)((ubyte)(((void *)ptr)[stride * i]))其中ubyte来自GL_UNSIGNED_BYTE参数。 –
谢谢:)我明白这个函数的功能,但我知道有几个对齐和格式相关的陷阱,GL会以很大的性能代价在内部无声地转换数据。我想知道是否指定奇数步长和对齐会导致GL在最终呈现调用发生时在内部重新缓冲数据。 – Peeling