2013-02-27 83 views
0

我已經實現了深度紋理並在2個不同的驅動程序上獲得不同的輸出。 我讀在片段着色器中紋理的所有信道():關於深度紋理中的通道

「vec4 color = texelFetch(tk_diffuseMap, ivec3(tmp), i);」 

在這種情況下我分別獲得在A和B中的紅色和灰色圖像。如果我閱讀紅色通道並將其複製到所有4個通道,我會在A上看到灰色圖像:

「vec4 color = vec4(texelFetch(tk_diffuseMap, ivec3(tmp), i).x)」. 

哪一個是正確的? enter image description here

enter image description here

回答

3

這是無關緊要的哪一個是正確的,因爲你不應該看在所有其他三個通道。這是一個深度紋理;它只有一個頻道,第一個。這是你應該觸摸的唯一一個。即使OpenGL定義了其他值,它也只是一些不相關的默認值,因爲您不在意。你想要深度,所以不要再看非深度值。

但是,如果你想要規格答案,你應該從GL_RED紋理中得到同樣的結果:0代表綠色和藍色,1代表alpha。