我正在调试一个非常大的项目着色树,在该项目中作者使用glsl文件来着色树,但是我在编译glsl文件时遇到了麻烦:
以下是错误日志:
%
Graph40.vert.glsl:
compile: code/trees/TreeRender/Shader/Graph40.vert.glsl
ERROR: 0:4: '' : syntax error: #version
ERROR: 0:15: 'layout' : syntax error: syntax error
另一个错误日志:
#version 120 core //the original file use version 400
#define VERT_POSITION 0
#define VERT_NORMAL 1
#define VERT_COLOR 2
#define VERT_TEXTURE 3
uniform mat4x4 matModel;
uniform mat4x4 matView;
uniform mat4x4 matProjection;
layout(location = VERT_POSITION) in vec4 Position;
layout(location = VERT_NORMAL) in vec4 Normal;
layout(location = VERT_COLOR) in vec4 Color;
layout(location = VERT_TEXTURE) in vec4 Texture;
out vec4 VertPosition;
out vec4 VertNormal;
out vec4 VertColor;
out vec4 VertTexture;
void main()
{
VertPosition = Position;
VertNormal = Normal;
VertColor = Color;
VertTexture = Texture;
gl_Position = matProjection * matView * matModel * vec4(Position.xyz, 1);
}
Default.vert.glsl:
compile: code/trees/TreeRender/Shader/Default.vert.glsl
ERROR: 0:11: 'matModel' : syntax error: syntax error
我试图谷歌错误,但没有找到可行的解决方案。
我使用mac osx,xcode 7.0,OpenGL和glut都是默认版本。 Glew版本是1.13.0。
是否因为该版本与作者使用的原始版本不匹配?因为我检查了原始版本,他使用了GLEW 1.9.0和GLUT 3.7.6。
/////更新//////
原始glsl文件包含:
#define VERT_POSITION 0
#define VERT_NORMAL 1
#define VERT_COLOR 2
#define VERT_TEXTURE 3
uniform mat4x4 matModel;
uniform mat4x4 matView;
uniform mat4x4 matProjection;
layout(location = VERT_POSITION) in vec4 Position;
layout(location = VERT_NORMAL) in vec4 Normal;
layout(location = VERT_COLOR) in vec4 Color;
layout(location = VERT_TEXTURE) in vec4 Texture;
out vec4 VertPosition;
out vec4 VertNormal;
out vec4 VertColor;
out vec4 VertTexture;
void main()
{
VertPosition = Position;
VertNormal = Normal;
VertColor = Color;
VertTexture = Texture;
gl_Position = matProjection * matView * matModel * vec4(Position.xyz, 1);
}
但会出现错误:
#version 400 core
所以我评论了这一行。但其他错误仍然存在。
我检查了我的OpenGL版本,使用OpenGL Extension查看器,它在我的Mac中的4.1,但是也支持早于此版本的版本,也应该可以使用。但是当我改为#version 410核心时,它有同样的错误,说410不受支持。
///////////更新////////////
原来,支持的版本mac不是我的上下文使用的版本。我使用GL_VERSION在我的代码中打印,它是2.1我使用的。根据[this] [1],现在我已经变成了4.1。但仍有错误:
ERROR: 0:4: '' : version '400' is not supported
ERROR: 0:4: '' : syntax error: #version
DefaultLight.frag.glsl:
trees/TreeRender/Shader/DefaultDepth.frag.glsl
helloERROR: 0:20: Use of undeclared identifier 'gl_FragData'
答案 0 :(得分:2)
版本120不支持核心配置文件(仅限OpenGL 3.2+) 布局规则器也仅在OpenGL 3.2 +
中可用