我已经实现了深度纹理并在2个不同的驱动程序上获得不同的输出。 我正在片段着色器中读取texture()中的所有通道:
“vec4 color = texelFetch(tk_diffuseMap, ivec3(tmp), i);”
在这种情况下,我分别在A和B上得到一个红色和灰色的图像。如果我读取红色通道并将其复制到所有4个通道,我会在A上获得灰色图像:
“vec4 color = vec4(texelFetch(tk_diffuseMap, ivec3(tmp), i).x)”.
哪一个是正确的?
答案 0 :(得分:3)
哪一个是对的,这是无关紧要的,因为你根本不应该看其他三个频道。这是一种深度纹理;它只有一个频道,第一个。那是你唯一应该接触的人。即使OpenGL定义了其他值是什么,它也只是一些不相关的默认值,因为你不关心。你想要深度,所以不要看非深度值。
但是,如果你想要规范答案,你应该从GL_RED
纹理得到同样的东西:绿色和蓝色为0,阿尔法为1。