查看 OpenGL 中顶点数组的文档,我发现用于索引的两种最常见的内存类型是 GLubyte (GL_UNSIGNED_BYTE) 和 GLshort (GL_SHORT)。我想知道将两者用于索引之间是否有任何实际区别
谢谢, 龙纹
GL_UNSIGNED_BYTE
对于最多有 256 个顶点的模型来说是可以的——这真的不多。
GL_UNSIGNED_SHORT
,占用 2 个字节,会将您限制为 65536 个顶点 - 仍然很少。
我想说最常见的变体是GL_UNSIGNED_INT
,因为对于中多边形和高多边形模型,即使 2 个字节也可能不够。
GL_UNSIGNED_BYTE 是 1 个字节,GL_SHORT 是 2 个字节。字节的唯一优点是它们更小,因此它们存储的内存更少,传输到图形内存的时间也更少(假设顶点数组或 VBO)。
请注意,并非所有类型都可用于所有用途:例如,您不能有 GL_UNSIGNED_BYTE 顶点。
GPU 只能处理 16 位或 32 位索引,因此使用 GL_UNSIGNED_BYTE 时会产生额外的开销,并且不会节省内存。