我正在使用Visual Studio完成关于着色器的教程...我在ElCapitan上使用Xcode。
我的readShaderCode()函数将shaderCode文件内容(vertex.glsl和fragment.glsl)传递给控制台 - 只是为了确保 - 以及OpenGL版本。
所以这段代码适用于Windows但不适用于我的机器!我无法看清问题是什么,如果有人能为我解决这个问题,我会非常感激!谢谢。并感谢所有有时帮助我的帖子:)
这是输出:
Working with OpenGl: 2.1 INTEL-10.14.66
Here is the shader Code:
#version 120
#extension GL_ARB_separate_shader_objects : enable
in layout(location=0) vec2 position;
in layout(location=1) vec3 vertexColor;
out vec3 theColor;
void main() {
gl_Position = vec4(position, 0.0, 1.0);
theColor = vertexColor;
}
*****************************************
Working with OpenGl: 2.1 INTEL-10.14.66
Here is the shader Code:
#version 120
#extension GL_ARB_separate_shader_objects : enable
out vec4 daColor;
in vec3 theColor;
void main() {
daColor = vec4(theColor, 1.0);
}
*****************************************
WARNING: 0:2: extension 'GL_ARB_separate_shader_objects' is not supported
ERROR: 0:4: '(' : syntax error: syntax error
答案 0 :(得分:3)
你得到完全合理的错误和警告。
警告:0:2:不支持扩展“GL_ARB_separate_shader_objects”
这正是它所说的。您的着色器取决于不受支持的扩展名。
错误:0:4:'(':语法错误:语法错误
顶点着色器的第4行只有一个(
字符,因此可以清楚地说明问题所在。
此:
in layout(location=0) vec2 position;
无效 GLSL 1.20代码。 GLSL 1.20不允许in
合格的全局变量,而GLSL 1.20不知道layout
的含义。
您的代码是合理的#version
的GLSL代码。如果另一个实现采用它,那么您依赖于实现定义的行为。