QOpenGLShaderProgram:是否可以使错误输出更好?
QOpenGLShaderProgram: is possible to make error output nice?
我正在通过 OpenGL 和 Qt 在 GPU 上实现一些数值算法。
但我不是很熟悉它。
我想从我当前的着色器中提取一些函数到一些 "shader library" 并通过字符串插值在我的其他着色器中使用它。实现起来不难,但我不知道如何处理着色器的编译错误
我使用下面的代码来编译shader
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
是否可以捕获错误行号并使用它来构建我自己的错误消息? (突出显示的行)
根据 Qt 文档,您可以使用 QOpenGLShaderProgram::log()
:
Returns the errors and warnings that occurred during the last link()
or addShader() with explicitly specified source code.
然后您可以解析生成的字符串以构建您自己的错误消息。
我正在通过 OpenGL 和 Qt 在 GPU 上实现一些数值算法。 但我不是很熟悉它。 我想从我当前的着色器中提取一些函数到一些 "shader library" 并通过字符串插值在我的其他着色器中使用它。实现起来不难,但我不知道如何处理着色器的编译错误
我使用下面的代码来编译shader
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
是否可以捕获错误行号并使用它来构建我自己的错误消息? (突出显示的行)
根据 Qt 文档,您可以使用 QOpenGLShaderProgram::log()
:
Returns the errors and warnings that occurred during the last link() or addShader() with explicitly specified source code.
然后您可以解析生成的字符串以构建您自己的错误消息。