【发布时间】:2013-08-31 23:34:03
【问题描述】:
我的 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]构造的工作方式。
标签: opengl compilation glsl shader