我一直这样编写着Shader:
#version 330 core
in vec2 tex_position;
uniform sampler2D texture_in;
void main(){
gl_FragColor = texture(texture_in, vec2(tex_position.x, 1.0 - tex_position.y));
}
这段代码可以编译和运行,但是我的朋友(他在另一台电脑上使用相同的OpenGL/GLSL版本)告诉我它失败了,因为 gl_FragColor
已经被移除。我该如何强制这些着色器只使用标准的GLSL 330,而不是非标准/废弃的内容?
glGetShaderInfoLog
)中是否有警告可能是值得的。 - GuyRTgl_FragColor
或用户定义的输出(没有提到必须使用#version xxx compatibility
),而OpenGL4.3(核心)规范根本没有提到gl_FragColor
。尽管如此,我同意从GLSL规范中明显的阅读表明包括“core”应该会导致错误。 - GuyRTcgc
、glslang
(khronos 提供的参考“编译器”)和 mesa 的着色器编译器的组合。如果其中至少一个发现了什么,那就已经有点可疑了。 - keltar