得到 'location' : too large for fragment output error while using glslang
getting 'location' : too large for fragment output error while using glslang
我在我的代码中使用 glslang SDK 在线编译着色器程序,但是我的片段着色器出现以下错误:
GLSL Parsing Failed for: Text.frag ERROR: 0:6: 'location' : too large
for fragment output ERROR: 1 compilation errors. No code generated.
GLSL Linking Failed for: Text.frag ERROR: 0:6: 'location' : too large
for fragment output ERROR: 1 compilation errors. No code generated.
Assertion failed: node->getOp(), file
C:\projects\glslang\SPIRV\GlslangToSpv.cpp, line 2412
我的顶点着色器:
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) out vec3 fragColor;
vec2 positions[3] = vec2[](
vec2(0.0, -0.5),
vec2(0.5, 0.5),
vec2(-0.5, 0.5)
);
vec3 colors[3] = vec3[](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);
fragColor = colors[gl_VertexIndex];
}
我的片段着色器
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec3 fragColor;
layout(location = 0) out vec4 outColor;
void main() {
outColor = vec4(fragColor, 1.0);
}
我在我的代码中使用 glslang SDK 在线编译着色器程序,显然在 glslang 代码中您必须手动调整一些限制参数以使 glslang 接受通常不被接受的着色器变量,此问题已通过设置解决maxDrawBuffers
到true
如下
resources = DefaultTBuiltInResource;
resources.maxDrawBuffers = true;
我不确定这到底是做什么的以及为什么它不是本地设置的,但也许有人可以进一步解释。
我在我的代码中使用 glslang SDK 在线编译着色器程序,但是我的片段着色器出现以下错误:
GLSL Parsing Failed for: Text.frag ERROR: 0:6: 'location' : too large for fragment output ERROR: 1 compilation errors. No code generated.
GLSL Linking Failed for: Text.frag ERROR: 0:6: 'location' : too large for fragment output ERROR: 1 compilation errors. No code generated.
Assertion failed: node->getOp(), file C:\projects\glslang\SPIRV\GlslangToSpv.cpp, line 2412
我的顶点着色器:
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) out vec3 fragColor;
vec2 positions[3] = vec2[](
vec2(0.0, -0.5),
vec2(0.5, 0.5),
vec2(-0.5, 0.5)
);
vec3 colors[3] = vec3[](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);
fragColor = colors[gl_VertexIndex];
}
我的片段着色器
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec3 fragColor;
layout(location = 0) out vec4 outColor;
void main() {
outColor = vec4(fragColor, 1.0);
}
我在我的代码中使用 glslang SDK 在线编译着色器程序,显然在 glslang 代码中您必须手动调整一些限制参数以使 glslang 接受通常不被接受的着色器变量,此问题已通过设置解决maxDrawBuffers
到true
如下
resources = DefaultTBuiltInResource;
resources.maxDrawBuffers = true;
我不确定这到底是做什么的以及为什么它不是本地设置的,但也许有人可以进一步解释。