我正在使用QT加載,編譯和鏈接OpenGL着色器。如何從QOpenGLShader獲取着色器版本?
我需要執行的具體操作取決於着色器代碼
使用GLSLversion是否有可能恢復從QOpenGLShader接口的版本,而實際得到的着色器的源代碼,並解析其檢測版本線?
我正在使用QT加載,編譯和鏈接OpenGL着色器。如何從QOpenGLShader獲取着色器版本?
我需要執行的具體操作取決於着色器代碼
使用GLSLversion是否有可能恢復從QOpenGLShader接口的版本,而實際得到的着色器的源代碼,並解析其檢測版本線?
Qt和OpenGL都不允許訪問着色器版本(在Qt的情況下,可能是因爲它不知道它並且不需要)。您只需解析源代碼即可,但由於#version
需要獨立運行,因此只需分割和基本字符串操作即可提取所需內容。
以下是解析源代碼解析版本的解析。 這可能對某人有用。
int extractVersion(QOpenGLShader* s){
assert(s);
//get the source code
QString code = QString::fromUtf8(s->sourceCode());
QRegExp versionExp("#version\\s+(\\d+)");
bool b = code.contains(versionExp);
if (!b) return 100;
else return versionExp.cap(1).toInt();
}