2013-02-27 89 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。