我正在使用 C++ 在 Windows 8.1 上使用 Qt5.4 编写 3D 应用程序的接口(interface)。该应用程序正在使用 glLoadGen 加载 OpenGL 函数。
不,问题是,在包含 gl.h 之前,GlWidget 和 glLoadGen 都想被包含,而且在某些时候它们都包含 gl.h。所以看起来,编译一个同时使用两者的文件是不可能的。
使用一些包装器,我也许可以避免这个问题,但我宁愿不这样做。这个问题有什么干净的解决方案吗?
最佳答案
干净的解决方案是分离您的关注点。有一个与 Qt 交互的源文件,它使用 Qt 的东西。然后有另一个与 OpenGL 交互的源文件,使用 glLoadGen 的东西。
如果您有一个函数在概念上需要两者,请让它在需要与 GL 对话时调用 OpenGL 交互代码中的函数。因此,如果您想在调整窗口大小时更改视口(viewport),您可以让 Qt 代码检测调整大小,然后调用一个函数,该函数转到 OpenGL 交互代码以实际调用 glViewport
。
这样,如果您需要从 Qt 切换,只需替换与 Qt 交互的代码即可。
也就是说,glLoadGen 实际上并不是一个 OpenGL 加载库。它是用于 OpenGL 加载库的生成器。这是一个extensible platform .因此,如果将渲染代码粘贴到 UI 代码中对您来说真的那么重要(一般来说,这是一种糟糕的形式),您可以编写一个实际上与 Qt 兼容的生成器样式。
当然,编写 glLoadGen 样式并非易事。您必须了解一些 Lua 脚本,并且必须阅读 how the generation system actually works .
关于c++ - 将 QT5 与 glLoadGen 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454776/