qt - QOpenGLShaderProgram : is possible to make error output nice?

标签 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

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

最佳答案

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

Returns the errors and warnings that occurred during the last link() or addShader() with explicitly specified source code.



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

关于qt - QOpenGLShaderProgram : is possible to make error output nice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436195/

相关文章:

javascript - promise 决心成功吗?

windows-7 - 类型不匹配的VB6错误处理

c++ - C++中的二维对象数组

cocoa - 如何从 View Controller 对象绘制到 NSOpenGLView?

c++ - Qt 创建者。更改插槽的代码生成模板

c++ - 为 Qt5 指定 OpenGL 桌面而不是 ES

c++ - 旋转实现错误

asp.net-mvc-3 - 在MVC 3中显示自定义错误页面不起作用!

c++ - 未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5

c++ - Qt 图表和数据可视化小部件