0
我使用GL_LUMINANCE格式加載具有灰度圖像的紋理。OpenGL ES 2.0 - 有沒有辦法從灰度紋理讀取像素顏色?
當我在片段着色器中使用float NP = texture2D(input1, textureCoordinate).r;
程序失敗。
是否可以讀取像素灰度值或我是否僅限於使用4個通道?
我使用GL_LUMINANCE格式加載具有灰度圖像的紋理。OpenGL ES 2.0 - 有沒有辦法從灰度紋理讀取像素顏色?
當我在片段着色器中使用float NP = texture2D(input1, textureCoordinate).r;
程序失敗。
是否可以讀取像素灰度值或我是否僅限於使用4個通道?
當然。這裏是一些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;
工程就像一個魅力。
是的,這是可能的。可能你在其他地方有錯誤。你可以顯示你的着色器,以及glGetShader/ProgramInfoLog輸出失敗時的輸出嗎? – Tim
當你說程序失敗時,你的意思是它在編譯過程中失敗了,還是運行了,但是它返回了一個你不期望在你的float裏面的值? –