GLSL延迟渲染只能输出RGBA

时间:2015-08-30 13:29:32

标签: opengl glsl deferred-rendering

我正在尝试做一些阴影,但是如果使用的话,着色器只输出值:

layout (location = 0) out vec4 outColor;

它不适用于vec3或更少。 你可以在这里查看我的纹理属性:

    shadowTextureProperties.setHasMipMap(false);
    shadowTextureProperties.setMagFilter(EnumTextureFilter.NEAREST);
    shadowTextureProperties.setMinFilter(EnumTextureFilter.NEAREST);
    shadowTextureProperties.setWrapS(EnumTextureWrap.CLAMP_TO_EDGE);
    shadowTextureProperties.setWrapT(EnumTextureWrap.CLAMP_TO_EDGE);
    shadowTextureProperties.setInternalColorFormat(EnumTextureColorFormat.RGB_32F); // 1st format value
    shadowTextureProperties.setSrcColorFormat(EnumTextureColorFormat.RGB); // 2nd format value
    shadowTextureProperties.setValueFormat(EnumValueFormat.FLOAT);

这是我的shader片段源,带有vec3输出和上面的格式,我得到一个完全白屏。使用vec4,我得到了真正的深度值。

#version 400
precision highp float;
layout (location = 0) out vec3 outColor;

void main()
{
    outColor = vec3(gl_FragCoord.z);
}

结果

使用vec3: enter image description here

使用vec4: enter image description here

0 个答案:

没有答案