这是我的上下文:我在 Windows 上使用 OpenGL 编译图形引擎,所以我包含了 glext.h。惊喜,它与 Qt5 中的 gl2.h 冲突 ..
我发现如果定义了 QT_OPENGL_ES_2,则包含 gl2.h(来自 gles2)。然后我发现默认定义了 QT_OPENGL_ES_2,我无法定义 QT_NO_OPENGL_ES_2 ...或者我不明白以下代码是如何应该可以工作(顺便说一句,我的 qconfig.h 中的每个块 - 来自 Qt5 msvc10 离线安装程序的块 - 看起来像这样):
#if defined(QT_OPENGL_ES_2) && defined(QT_NO_OPENGL_ES_2)
# undef QT_OPENGL_ES_2
#elif !defined(QT_OPENGL_ES_2)
# define QT_OPENGL_ES_2
#endif
也许是因为我睡得不多,但看起来很奇怪。但是在没有定义 QT_OPENGL_ES_2 并且定义了 QT_NO_OPENGL_ES_2 的情况下,我很确定(我的 4 个非睡眠神经元)它进入第二个分支并定义了 QT_OPENGL_ES_2 ...
如果我是他们,我会写:
#if defined(QT_OPENGL_ES_2) && defined(QT_NO_OPENGL_ES_2)
# undef QT_OPENGL_ES_2
#elif !defined(QT_OPENGL_ES_2) && !defined(QT_NO_OPENGL_ES_2)
# define QT_OPENGL_ES_2
#endif
感谢您的时间 :)