在WebGL中使用gl_FragDepth

Mat*_*mus 5 opengl-es webgl

我正在用webgl编写3D应用程序,并且需要提供纹理中包含的我自己的深度数据,我当前的代码是这样做的:

VS:

    varying vec2 vUv;

    void main() {
        vUv = uv;
    }
Run Code Online (Sandbox Code Playgroud)

FS:

    uniform sampler2D depthTex;

    varying vec2 vUv;

    void main() {
        gl_FragDepth = texture2D(depthTex, vUv).r;
    }
Run Code Online (Sandbox Code Playgroud)

但是gl_FragDepth在opengl-es(和webgl)中被禁用了,无论如何以某种方式启用它,或者以任何方式提供我自己的深度数据而又不涉及渲染目标的繁重操作?

小智 5

EXT_frag_depth扩展允许使用gl_FragDepthEXT的。您可以在此处检查您的浏览器是否支持它。目前仅Firefox支持。

扩展可以使用

gl.getExtension("EXT_frag_depth");
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令检查它是否可以编程方式使用

gl.getSupportedExtensions().indexOf("EXT_frag_depth") >= 0
Run Code Online (Sandbox Code Playgroud)