2012-06-28 54 views
0

我使用GL_LUMINANCE格式加載具有灰度圖像的紋理。OpenGL ES 2.0 - 有沒有辦法從灰度紋理讀取像素顏色?

當我在片段着色器中使用float NP = texture2D(input1, textureCoordinate).r;程序失敗。

是否可以讀取像素灰度值或我是否僅限於使用4個通道?

+2

是的,這是可能的。可能你在其他地方有錯誤。你可以顯示你的着色器,以及glGetShader/ProgramInfoLog輸出失敗時的輸出嗎? – Tim

+1

當你說程序失敗時,你的意思是它在編譯過程中失敗了,還是運行了,但是它返回了一個你不期望在你的float裏面的值? –

回答

0

當然。這裏是一些GL代碼加載一個「高度圖」(灰色級別存儲爲float's)。 紋理存儲在單元0

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, textureNames[0]); 
... 
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 
      heightMap.W, heightMap.H, 0, 
      GL_LUMINANCE, GL_FLOAT, &heightMap.elev[0]); 

這裏是從我的頂點着色器的有關代碼。制服HeightMap是0(單元0)。

float z = texture2D(HeightMap, TexCoord0).x * ElevScale + ElevShift; 

工程就像一個魅力。