Qt OpenGL 错误'_imp_gl...'



试图学习如何使用QGLWidget,但已经浪费了很多时间来处理这些错误。我什至不明白他们。我用谷歌搜索,但什么都没有。请问,有什么建议吗?

法典:https://gist.github.com/anonymous/77c57fde631c77810775

In function `ZN6Widget12initializeGLEv':
 undefined reference to `_imp__glEnable@4'
 undefined reference to `_imp__glShadeModel@4'
 and more...

您没有链接到任何 GL 库。

从Qt 5.5开始,在Windows上,默认情况下,Qt不链接到libGL,但有一个运行时机制来决定加载libGL或ANGLE(取决于你的操作系统功能)。这意味着你不能只使用glFoo - 你会得到链接错误。


解决方案:通过函数解析器,例如QOpenGLFunctions

QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glEnable(GL_FOOBAR);
f->glDrawArrays(...);

请注意,在Windows上,无论如何都需要函数解析器才能使用1.1之后引入的任何OpenGL函数。

此外,如果您使用的是仅 ES2 或仅桌面 GL 函数,则应强制 Qt 加载正确的 GL 实现:

int main(int argc, char **argv) {
    // *before* creating it
    QApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
    QApplication app(argc, argv); 

更多信息在这里。

(更激进的解决方案:重新编译Qt传递-opengl desktop-opengl es2进行配置)。

相关内容

  • 没有找到相关文章

最新更新