2017-04-20 228 views
0

我在WebGL2中使用了简单的片段着色器,它将不同的颜色输出到两个不同的纹理目标中。如何将gl_fragDepth值写入第三个(深度)纹理目标(位置= 2)?WebGL2:将片段深度写入深度纹理

#version 300 es 
precision mediump float; 

layout(location = 0) out vec4 fragColor1; 
layout(location = 1) out vec4 fragColor2; 

void main(void) { 
    fragColor1 = vec4(1.0, 0.0, 0.0, 1.0); // printf of WebGL :) 
    fragColor2 = vec4(1.0, 0.0, 0.0, 1.0); 
} 

回答

1

你只能输出一个真正的深度每个片段价值,但它听起来像是你不这样做呢,所以你需要do是将DEPTH_ATTACHMENT附加到帧缓冲区,并写入片段着色器中的gl_FragDepth。

0

它原来是这么简单

layout (location = 2) out float fragDepth; 
... 
fragDepth = gl_FragCoord.z;