gpt4 book ai didi

c++ - 使用 QGLShaderProgram 时出现 GLSL 编译错误

转载 作者:行者123 更新时间:2023-11-28 07:40:25 25 4
gpt4 key购买 nike

我目前正在 Qt 5 中试用一些 opengl 组件,我正在使用 QtCreator 2.6.2、clang 4.2 在 Mac OSX 10.8 上进行编译我已经编写了一个非常基本的 GLSL 着色器,可以在 OpenGl Shader Builder 中很好地编译和链接,但是当我尝试使用 QGLShader 加载它时,它无法编译并且日志函数没有返回任何错误消息。

顶点着色器:

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) 查看程序是否设法找到文件并且确实找到了,顶点着色器也是如此文件,我似乎找不到他们无法编译的原因。我做错了什么吗?

最佳答案

经过一些调试后,我意识到我正在尝试在创建有效上下文之前编译着色器。我的错。

关于c++ - 使用 QGLShaderProgram 时出现 GLSL 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15934158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com