我正在尝试从 GLee 迁移到 glew,因为 GLee 无法在 VC2010 下工作,并且已经有一段时间没有更新了。我在使用头文件时遇到了问题,因为两个库都希望首先定义它们的头文件。 glew 不喜欢先定义 gl.h(在 QtOpenGL 中定义),并且 QtOpenGL 特别声明 glew 应该在 QtOpenGL 之后定义。
搜索显示很多人同时使用 glew 和 Qt 效果很好。至少,我想要一个关于兼容性的明确答案。我已将 .h 和 .c 文件添加到我的项目中,因为将来我不必再费力安装 .lib 和 .dll 文件。
下面是 QtOpenGL 中的代码,如果首先包含 glew,则会调用该代码:
#ifdef __GLEW_H__
#warning qglfunctions.h is not compatible with GLEW, GLEW defines will be undefined
#warning To use GLEW with Qt, do not include <QtOpenGL> or <QGLFunctions> after glew.h
#endif
如果首先包含 QtOpenGL,则调用的代码如下:
#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H)
#error gl.h included before glew.h
#endif
最佳答案
GLEW 和 qtfunctions 都定义相同的东西。您不能同时使用它们,也不应该这样做。您使用 Qt 的全部目的就是初始化 OpenGL 上下文。所以不要包含 qtfunctions。尝试仅包含 QGLWidget 和该类所需的内容。
关于c++ - Qt4 和 GLew 似乎彼此不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251453/