[英]Passing custom type (struct) uniform from Qt to GLSL using QGLShaderProgram
[英]GLSL compilation error when using QGLShaderProgram
我目前正在尝试使用Qt 5中的一些opengl组件,正在使用QtCreator 2.6.2和clang 4.2在Mac OSX 10.8上进行编译。我编写了一个非常基本的GLSL着色器,可以很好地在OpenGl Shader Builder中进行编译和链接,但是当我尝试使用QGLShader加载它时,它无法编译,并且log函数未返回任何错误消息。
顶点着色器:
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)来查看程序是否设法找到了文件,并且确实如此,顶点着色器文件也是如此似乎找不到他们无法编译的原因。 我在做错什么吗?
经过一些调试后,我意识到我正在尝试在创建有效上下文之前编译着色器。 我的错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.