我的GLSL着色器出現問題。 當我想編譯片段着色器的一部分,我得到以下錯誤:GLSL片段着色器結構輸出
0:24: error(#181) Cannot be used with a structure: out
error(#273) 1 compilation errors. No code generated
所以,問題在於在我出去的變量,我承擔。 這裏是我的片段着色器:
#version 410
uniform mat4 gWVP;
uniform mat4 gWorld;
uniform sampler2D gColorMap;
in VSOutput
{
vec3 WorldSpacePos;
vec2 TexCoord;
vec3 Normal;
} FSin;
struct FSOutput
{
vec3 WorldSpacePos;
vec3 Diffuse;
vec3 Normal;
vec3 TexCoord;
};
out FSOutput FSOut;
void main()
{
FSOut.WorldSpacePos = FSin.WorldSpacePos;
FSOut.Diffuse = texture(gColorMap, FSin.TexCoord).xyz;
FSOut.Normal = normalize(FSin.Normal);
FSOut.TexCoord = vec3(FSin.TexCoord, 0.0);
}
據我所知,應該可以輸出結構在OpenGL 4.0及以上版本,不應該嗎?所以我沒有得到錯誤,這是一個驅動程序問題或類似的東西? 我正在用13.4驅動程序在Radeon HD 6950上運行。
有些階段允許您輸出結構,片段着色器不是這些階段之一。來自片段着色器的輸出非常嚴格 - 最接近你想要的就是使用vec3數組;這與舊的'gl_FragData [n]'結構的工作方式類似。 –