QOpenGLShaderProgram:可以使错误输出好吗?

时间:2015-05-25 10:26:50

标签: qt opengl error-handling shader gpu

我正在通过OpenGL和Qt在GPU上实现一些数值算法。 但我不是很熟悉它。 我想从当前着色器中提取一些函数到一些“着色器库”,并通过字符串插值在我的其他着色器中使用它。它不难实现,但我不知道如何处理着色器的编译错误

我使用以下代码编译着色器

QOpenGLShaderProgram *shaderProgram = new QOpenGLShaderProgram();
if (!shaderProgram->addShaderFromSourceFile(QOpenGLShader::Fragment,fragmentShaderFileName)) {
    qDebug() << "Failed to compile fragment shader";
    //..........

当出现一些编译错误时,Qt打印以下消息(示例)

QOpenGLShader::compile(Fragment): 0:331(9): error: syntax error, unexpected NEW_IDENTIFIER, expecting ',' or ';'

*** Problematic Fragment shader source code ***
//my shader source code

是否可以捕获错误行号并使用它来构建我自己的错误消息? (突出显示的行)

1 个答案:

答案 0 :(得分:1)

根据Qt文档,您可以使用QOpenGLShaderProgram::log()

  

返回上一个链接()期间发生的错误和警告   或者带有明确指定源代码的addShader()。

然后,您可以解析生成的字符串以构建自己的错误消息。