1
我试图从GLee转移到glew,因为GLee在VC2010下无法工作,并且在一段时间内没有更新。我在头文件中遇到了问题,因为这两个库都希望首先定义它们的头文件。 glew不喜欢首先定义gl.h(在QtOpenGL中定义),QtOpenGL特别声明glew应该在QtOpenGL之后定义。Qt4和GLew似乎互不兼容
搜索显示许多使用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
我想使用未在QtOpenGL中定义的着色器程序和缓冲区对象(但需要创建OGL渲染窗口)。如果没有GLEW,我会在Microsoft的头文件中使用古老版本的OpenGL。 – usm 2012-02-12 19:07:42
@usm:我解释了如何做到这一点:停止包含qtfunctions。首先包含GLEW,然后只包含创建QGLWidget实例所需的最少量东西。哦,没有人强迫你使用Qt;如果你不喜欢它,还有许多其他跨平台的方法来创建OpenGL窗口。 – 2012-02-12 19:53:36
我的歉意。在我的沮丧之中,我错误地解释了你的答案意味着qtfunctions也被用于访问指向新的GL函数的指针,就像GLEW一样。另外,我不知道QtOpenGL实际上是其他几个头文件的组合,所以你的建议已经过去了。我休息了一会儿,清醒的头脑又有了另一个。在vc2010的Qt预编译版本中遗漏了Qt dll的问题,但是通过一些工作(手动编译Qt),我终于得到了它的工作。感谢你的帮助! – usm 2012-02-12 22:00:45