Qt OpenGL 错误“_imp_gl...”
Qt OpenGL error '_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...
您没有link反对任何 GL 库。
从 Qt 5.5 开始,在 Windows 上,默认情况下,Qt 不会 link 反对 libGL,但有一个运行时机制来决定加载libGL 或 ANGLE(取决于您的 OS 能力)。这意味着您不能只使用 glFoo
——您会得到 linking 错误。
解决方案:通过函数解析器,例如QOpenGLFunctions
:
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glEnable(GL_FOOBAR);
f->glDrawArrays(...);
请注意,在 Windows 上,您无论如何都需要函数解析器才能使用 1.1 之后引入的任何 OpenGL 函数。
此外,如果您使用的是纯 ES2 或桌面 GL-only 函数,您应该强制 Qt 加载正确的 GL 实现:
int main(int argc, char **argv) {
// *before* creating it
QApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
QApplication app(argc, argv);
(更激进的解决方案:通过-opengl desktop
或-opengl es2
重新编译Qt进行配置)。
试图学习如何使用 QGLWidget,但已经浪费了很多时间来处理这些错误。我什至不明白他们。我用谷歌搜索,但没有。请问有什么建议吗?
代码: https://gist.github.com/anonymous/77c57fde631c77810775
In function `ZN6Widget12initializeGLEv':
undefined reference to `_imp__glEnable@4'
undefined reference to `_imp__glShadeModel@4'
and more...
您没有link反对任何 GL 库。
从 Qt 5.5 开始,在 Windows 上,默认情况下,Qt 不会 link 反对 libGL,但有一个运行时机制来决定加载libGL 或 ANGLE(取决于您的 OS 能力)。这意味着您不能只使用 glFoo
——您会得到 linking 错误。
解决方案:通过函数解析器,例如QOpenGLFunctions
:
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glEnable(GL_FOOBAR);
f->glDrawArrays(...);
请注意,在 Windows 上,您无论如何都需要函数解析器才能使用 1.1 之后引入的任何 OpenGL 函数。
此外,如果您使用的是纯 ES2 或桌面 GL-only 函数,您应该强制 Qt 加载正确的 GL 实现:
int main(int argc, char **argv) {
// *before* creating it
QApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
QApplication app(argc, argv);
(更激进的解决方案:通过-opengl desktop
或-opengl es2
重新编译Qt进行配置)。