0
我目前正在尝试Qt 5中的一些opengl组件,我正在使用QtCreator 2.6.2编译Mac OSX 10.8中,编辑4.2 我写了一个非常基本的GLSL着色器在OpenGl Shader Builder中编译和链接良好,但是当我尝试使用QGLShader加载它时,它无法编译,并且日志函数不返回任何错误消息。使用QGLShaderProgram时GLSL编译错误
顶点着色器:
attribute vec4 in_position;
attribute vec3 in_normal;
attribute vec3 in_color;
attribute vec2 in_tex;
uniform vec4 lightPosition;
varying vec2 texCoords;
varying vec3 normal;
varying vec3 vertToLightDir;
void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * in_position;
vec4 worldVert = gl_ModelViewMatrix * in_position;
vertToLightDir = normalize(vec3(lightPosition - worldVert));
normal = gl_NormalMatrix * in_normal;
texCoords = in_tex;
}
片段着色器:
uniform sampler2D texture0;
uniform vec4 lightColor;
varying vec2 texCoords;
varying vec3 normal;
varying vec3 vertToLightDir;
void main(void)
{
float lightIntensity = clamp(dot(normal, vertToLightDir), 0.0, 1.0);
gl_FragColor = (texture2D(texture0, texCoords) + (lightColor * lightIntensity)) * 0.5;
}
加载着色器代码:
QGLShader fragShader(QGLShader::Fragment);
bool success = fragShader.compileSourceFile("Fragment.glsl");
qDebug() << fragShader.log();
我用调试器看到compileSourceFile函数返回false ,我还使用access(“Fragment.glsl”,F_OK)来查看程序是否设法找到该文件它的确如此,顶点着色器文件也是这样,我似乎无法找到它们不会编译的原因。有什么我做错了吗?
你的'#版本'指令在哪里? – genpfault 2013-04-10 19:17:17
@genpfault自从我上次写了着色器以来,我一直都不知道#version指令,但是添加#version 140并不会改变任何内容 – 2013-04-10 19:25:11