如何使用 Qt 4 创建 OpenGL 3 上下文?

Posted

技术标签:

【中文标题】如何使用 Qt 4 创建 OpenGL 3 上下文?【英文标题】:How to Create OpenGL 3 Context with Qt 4? 【发布时间】:2009-09-02 22:56:31 【问题描述】:

我想学习使用 OpenGL 进行图形编程。因为我将开始学习它,所以我决定学习新的/OpenGL3 做事方式。据我所知,必须为此创建一个 OpenGL 3 上下文(如果我理解正确,则在新的 OpenGL 3.2 中的核心配置文件)。好吧,我考虑过为此使用 Qt,目前使用的是 4.5.2 版,因为我已经知道它并且喜欢它,并且它支持创建 OpenGL 小部件。我遇到的问题是,OpenGL 小部件看起来总是使用旧的 OpenGL 2 上下文进行装箱,我看不到将其放入/切换到 OpenGL 3 方式的选项。我是否在这里遗漏了一些明显的东西,或者我需要一些更棘手的东西来使用 Qt 创建 OpenGL 3 上下文?当前版本的 Qt 甚至支持它吗?我使用的是 Linux,如果有什么不同的话。

【问题讨论】:

【参考方案1】:

Mesa 软件渲染仍停留在 OpenGL 2.1 上。如果您使用二进制 NVidia 驱动程序,它们会在足够新的硬件上提供 OpenGL 3.2 support。 AMD 的 latest fglrx 支持 3.1。开源驱动程序似乎在 1.3-1.4 左右达到顶峰。

如果您已经走到这一步,您可能不得不破解 Qt 源代码以使用 GLX_ARB_create_context 而不是 GLXCreateContext 来获取 OpenGL 3.2 Core 上下文。

This guy 似乎取得了部分成功,如果您还没有通过 Google 看到这个帖子的话。

【讨论】:

以上是关于如何使用 Qt 4 创建 OpenGL 3 上下文?的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上的 Qt 4.8.6 中更改 QGLWidgets 的 OpenGL 上下文版本

如何在 OS X 上初始化 QOpenGLContext 以使用 OpenGL 3.3 版?

带有 OpenGL 上下文的基于 Qt 的命令行工具

将 Qt GUI 嵌入到现有的 OpenGL 程序中

带有 QT 错误的 OpenGL:断言:“QOpenGLFunctions::isInitialized(d_ptr)”。无法创建 OpenGL 上下文

Yocto/Qt5.6:QXcbIntegration:无法创建平台 OpenGL 上下文