如何使用GL_UNSIGNED_BYTE进行纹理坐标?

时间:2012-07-04 20:52:31

标签: ios xcode performance opengl-es

在XCode附带的“OpenGL ES Programming Guide for iOS”文档中,在“使用顶点数据的最佳实践”部分的“使用最小的属性可接受类型”标题下,它说

  

使用2或4个无符号字节指定纹理坐标   (GL_UNSIGNED_BYTE)或无符号短(GL_UNSIGNED_SHORT)。

我有点不解。我认为纹理坐标将是<大部分时间都是1,因此需要浮点数来表示小数值。你如何使用无符号字节或无符号短裤?在着色器中将它除以255?

1 个答案:

答案 0 :(得分:3)

如果您使用GL_UNSIGNED_BYTE,则最终会将normalized的{​​{1}}传递给(例如)GL_TRUE,表示您传递的值不是介于0和1之间,但在传递到着色器之前,应从其整个范围(例如0到255)归一化到0到1的标准化范围。 (有关详细信息,请参阅OpenGL ES 2.0规范的第2.1.2节)。

换句话说,当您传递整数类型(如无符号字节)时,请使用“{normal}”的“normalized”值并使用该类型的整个范围(例如0到255),因此值为127大约相当于浮点0.5。