关于深度纹理中的通道

时间:2013-02-27 11:05:05

标签: opengl opengl-3 depth-testing

我已经实现了深度纹理并在2个不同的驱动程序上获得不同的输出。 我正在片段着色器中读取texture()中的所有通道:

“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

1 个答案:

答案 0 :(得分:3)

哪一个是对的,这是无关紧要的,因为你根本不应该看其他三个频道。这是一种深度纹理;它只有一个频道,第一个。那是你唯一应该接触的人。即使OpenGL定义了其他值是什么,它也只是一些不相关的默认值,因为你不关心。你想要深度,所以不要看非深度值。

但是,如果你想要规范答案,你应该从GL_RED纹理得到同样的东西:绿色和蓝色为0,阿尔法为1。