Qt与GLee冲突

标签 qt opengl

我在基于Qt 3(办公室政治)的游戏中添加了OpenGL支持。基础知识(QGLWidget等)可以正常工作。

为了使用OpenGL扩展,我任意选择了GLee(它是开箱即用的,而GLew则不是)。

GLee.h和qgl.h不能很好地玩在一起。 AFAICT,每个都必须包含在另一个之前。

我从GLee.h中撤消了预处理检查(确保首先包含它),在包含OpenGL header 之前插入了它使用的预处理指令,然后首先包含qgl.h。在linux上,它可以归结为:

    #define __glext_h_  /* prevent glext.h from being included  */
    #define __glxext_h_ /* prevent glxext.h from being included */
    #define GLX_GLXEXT_PROTOTYPES
#include <qgl.h>
#include "GLee.h" // my hacked version

这样就建立了(不知道我的代码是否会真正运行……这个问题是先发制人的(即我正在拖延)),但这似乎是一个可怕的错误。 Googling引起了很多人的问这个基本问题(尽管他们大多数人并没有费心找出伪造的编译器错误,以便他们可以看到根本问题),但是我还没有看到任何实际答案。

有没有更好的方法(更优雅,更便携,更坚固等)?

最佳答案

这仍然不如我所希望的那么干净,但是它至少可以在不破解GLee.h的情况下构建和运行。

在所有其他操作之后,依次包含#object qobject.h,GLee.h和qgl.h。

因此,头文件可能看起来像

...blah...
...other #includes

#include <qobject.h>
#include "GLee.h"
#include <qgl.h>

class MyGlWidget : public QGLWidget
{
...
}

那么源文件将最后#include该文件。

关于Qt与GLee冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926299/

相关文章:

opengl - 调试 OpenGL 的最佳方法是什么?

opengl - XNA, 直接 X , OpenGL

c++ - 运行 QOpenGLWidget 实现时出现段错误

sql - Qt QSql类错误

c++ - 如何在 qt 中使用 gui 对象名称运行循环?

qt - 如何制作小部件的 QVector?

linux - Qmake - 不在 Linux 中复制文件

c# - OpenTK 不渲染我的三角形的颜色

c++ - QFuture<void> 不会工作

c++ - 重复纹理问题