我正在尝试做一些阴影,但着色器仅在我使用时输出值:
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);
这是我的着色器片段源,带有 vec3 输出和上面的格式,我得到了一个完全白色的屏幕。使用 vec4,我得到了真正的深度值。
#version 400
precision highp float;
layout (location = 0) out vec3 outColor;
void main()
{
outColor = vec3(gl_FragCoord.z);
}
结果