簡體   English   中英

使用QGLShaderProgram時GLSL編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM