c++ - 将 QT5 与 glLoadGen 结合使用

标签 c++ qt opengl qtopengl

我正在使用 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/

相关文章:

qt - OpenGL资源共享策略

c++ - 插槽后 Qt 访问冲突 0xC0000005

c++ - OpenGL 中的 BMP 屏幕截图

c++ - 由于 const 成员,'operator =' 函数不可用

c++ - Linux 中的代码执行时间

c++ - 在 boost::python 中公开 boost::scoped_ptr

c++ - 范围内的随机 float ?

c++ - 使用qml + QQuickView作为初始屏幕不起作用

opengl - GLSL 入门

OpenGL 顶点数组/缓冲区对象