2

查看 OpenGL 中顶点数组的文档,我发现用于索引的两种最常见的内存类型是 GLubyte (GL_UNSIGNED_BYTE) 和 GLshort (GL_SHORT)。我想知道将两者用于索引之间是否有任何实际区别

谢谢, 龙纹

4

3 回答 3

8

GL_UNSIGNED_BYTE对于最多有 256 个顶点的模型来说是可以的——这真的不多。

GL_UNSIGNED_SHORT,占用 2 个字节,会将您限制为 65536 个顶点 - 仍然很少。

我想说最常见的变体是GL_UNSIGNED_INT,因为对于中多边形和高多边形模型,即使 2 个字节也可能不够。

于 2010-11-18T13:56:25.070 回答
4

GL_UNSIGNED_BYTE 是 1 个字节,GL_SHORT 是 2 个字节。字节的唯一优点是它们更小,因此它们存储的内存更少,传输到图形内存的时间也更少(假设顶点数组或 VBO)。

请注意,并非所有类型都可用于所有用途:例如,您不能有 GL_UNSIGNED_BYTE 顶点。

于 2010-11-18T01:56:14.687 回答
3

GPU 只能处理 16 位或 32 位索引,因此使用 GL_UNSIGNED_BYTE 时会产生额外的开销,并且不会节省内存。

于 2010-11-19T02:04:55.683 回答