我现在正在使用 WebGL2.0 进行延迟着色。我现在面临的一个主要问题是我无法从 DEPTH_ATTACHMENT 中读取深度值。实际上,我使用 DEPTH24_STENCIL8 纹理创建自己的 GBuffer 作为 DEPTH_ATTACHMENT,然后将此纹理绑定到采样器并尝试在延迟着色部分中读取片段着色器中的值,如下所示:
uniform sampler2D u_depthSampler;
vec4 depthValue = texture(u_depthSampler, v_uv);
然后我将 depthValue 设置为我的着色片段着色器中的输出:
layout(location = 0) out vec4 o_fragOut;
o_fragColor.xyz = depthValue.xyz;
o_fragColor.w = 1.0;
在Firefox上执行此操作时,它没有报告任何错误,但输出颜色只是纯红色。(我认为这意味着 vec3(1.0, 0.0, 0.0) )。这真的让我很困惑。任何人都可以提供一些指导吗?我的 glsl 代码有问题吗?谢啦~