0

我有一些打包的顶点数据,每个顶点运行 6 个字节:

glVertexAttribPointer Shader.pos3d_loc, 3, GL_UNSIGNED_BYTE, True, 6, 0
glVertexAttribPointer Shader.norm_loc, 3, GL_UNSIGNED_BYTE, True, 6, 3

使用不是 4 字节的倍数的步幅和偏移量是否会导致任何性能损失(例如隐藏的内存副本)?

4

1 回答 1

0

简短的回答是“视情况而定”:

在 PC 和(至少某些)Android 设备上,以这种方式紧密封装 3 组件属性没有明显的损失。

在 IOS 上(无论如何,在写这篇文章时)会有很大的性能损失。IOS GL 实现在内部解包并对齐任何非 4 字节对齐的属性,从而导致内存和 CPU 命中。除非您使用动态 VBO,否则 CPU 命中可能并不明显。

于 2017-04-04T12:22:59.200 回答