2012-01-14 106 views
0

仪器鼓励我用GL_SHORTs纹理坐标。我这样做,为四边形,我只需要值0和1GL_SHORT作为纹理坐标

我还可以使用GL_SHORT的,我需要在0和1之间的值,如果短的精度足够其他情况?如果是这样如何?

回答

5

为了获得最大的精度,可以使用值0..32767用于指定纹理坐标为GL_SHORT指定值从0.0F至1.0F。然后你会得到精确三万二千七百六十七分之一,这大约是0.00003。这对你足够吗? - 这取决于你和你的应用程序。这很可能对你来说已经足够了。要指定介于0和1之间的某个值,则可以使用具有缩放的纹理矩阵(如果您在GLES1上),或者仅在片段着色器中使用适当的缩放均匀性(如果您位于GLES2上)乘以纹理坐标。

下面是GLES1一个简单的例子 - 可以说,你的纹理IR 100×200,你不需要指定精度较低的是1个纹理贴图坐标。然后你可以设置你的纹理矩阵规模为以下几个因素 - 1/100 1/200和:在你的顶点数组

glMatrixMode(GL_TEXTURE); 
glPushMatrix(); 
glLoadIdentity(); 
glScalex(65536/100, 65536/200, 1); 
glMatrixMode(GL_MODELVIEW); 

此后/缓冲器你可以使用:

  • (0,0 )指定值(10/100.0f,40/200.0f)=(0.1f,0.2f)的值(0.0f,0.0f)
  • (10,40)
  • (100,200)指定(1.0f,1.0f)的值。