0

我正在用 C++ 在 Windows 8.1 上使用 Qt5.4 编写一个 3D 应用程序的接口。该应用程序正在使用 glLoadGen 加载 OpenGL 函数。

没问题,GlWidget 和 glLoadGen 都希望在包含 gl.h 之前被包含在内,而且在某些时候都包含 gl.h。所以看起来,编译一个同时使用两者的文件是不可能的。

使用一些包装器,我可能能够规避这个问题,但我宁愿不这样做。这个问题有什么干净的解决方案吗?

4

1 回答 1

1

干净的解决方案是将您的担忧分开。拥有一个与 Qt 交互的源文件,它使用 Qt 的东西。然后有另一个与OpenGL交互的源文件,使用glLoadGen的东西。

如果你有一个在概念上需要两者的函数,当它需要与 GL 对话时,让它在 OpenGL 交互代码中调用函数。因此,如果您想在调整窗口大小时更改视口,您可以让 Qt 代码检测调整大小,然后调用一个函数,该函数会转到 OpenGL 交互代码以实际调用glViewport.

这样,如果您需要从 Qt 切换,您只需要替换与 Qt 交互的代码。


话虽如此,glLoadGen 实际上并不是一个 OpenGL 加载库。它是OpenGL 加载库的生成器。这是一个可扩展的平台。因此,如果将渲染代码粘贴到 UI 代码中对您来说真的很重要(一般来说,这是一种糟糕的形式),您可以编写一个实际上与 Qt 兼容的生成器样式。

当然,编写 glLoadGen 样式并非易事。您必须了解一些 Lua 脚本,并且必须阅读生成系统的实际工作原理

于 2015-12-24T16:03:38.933 回答