2012-01-14 104 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)的值。