【发布时间】:2009-05-29 14:34:43
【问题描述】:
我正在为基于 Qt 3(办公室政治)的游戏添加 OpenGL 支持。基础(QGLWidget 等)工作正常。
为了获得 OpenGL 扩展,我随意选择了 GLee(它是开箱即用的,而 GLew 没有)。
Glee.h 和 qgl.h 不能很好地结合在一起。 AFAICT,每个都必须在另一个之前包含。
我从 GLee.h 中抽出预处理检查 [确保首先包含它],在包含 OpenGL 头文件之前插入它使用的预处理指令,然后首先包含 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
构建(不知道我的代码是否真的会运行......这个问题是先发制人的[即我在拖延]),但这似乎是一个可怕的组合。谷歌搜索发现很多人都在问这个基本问题(尽管他们中的大多数人都没有费心找出虚假的编译器错误,因此他们可以看到根本问题),但我还没有看到任何实际答案。
有没有更好(更优雅、便携、健壮等)的方法来做到这一点?
【问题讨论】:
-
这听起来很可疑。是什么让您相信每个标题都必须在另一个之前包含?你得到什么错误?
-
GLee.h 具有预编译器检查,因此必须首先包含它(这是我为构建此 hack 而提取的内容)。当我首先包含标准的 GLee.h 时,我从 qevent.h(有时是 qnamespace.h)收到关于数字常量和类外使用的“朋友”的错误(以及其他暗示某处缺少 } 的错误)。 qtcentre.org/forum/f-general-programming-9/… 有一个很好的错误列表,但该修复对我没有帮助。
-
其中一个答案是否解决了您的问题?那你能把一个标记为接受吗?