Qt & OpenGL:如何强制使用 OpenGL 2.1?

Posted

技术标签:

【中文标题】Qt & OpenGL:如何强制使用 OpenGL 2.1?【英文标题】:Qt & OpenGL: How do I force OpenGL 2.1? 【发布时间】:2011-06-26 11:52:24 【问题描述】:

我正在开发一个使用 Qt 和 OpenGL 的应用程序,使用 Qt Creator 和 QGLWidget 子类化。

我的应用程序的用户群中旧硬件的比例高于平均水平,这就是为什么我需要它在仅支持 OpenGL 2.1 的显卡的机器上运行 - 或者,换句话说,我不能依赖任何更新的硬件比 2.1 存在。

我担心会在不知不觉中使用 2.1 之后引入的 OpenGL 功能。有什么方法可以将 OpenGL 配置为“仅”支持 2.1,这样如果我做了一些我不应该做的事情,就会出现运行时错误?或者,如果做不到这一点,确保兼容性的最佳做法是什么?

【问题讨论】:

【参考方案1】:

您唯一需要担心的是不要创建 OpenGL-3 核心配置文件上下文,而只能使用 OpenGL-2.1 规范中的函数。

由于创建 OpenGL-3 核心上下文需要您跳过一些障碍,因此您不会遇到问题。系统可能为您提供比 OpenGL-2.1 更新的东西,但只要您不使用 2.1 规范文档中没有的任何功能就可以了。您必须使用扩展机制才能在 Windows 上实际获得功能; OpenGL-2.1 在技术上是官方功能的扩展列表,因此请仔细阅读规范的附录,其中明确提到了以前的扩展功能。

【讨论】:

感谢您的回答。然而,试图坚持书面规范的人脑正是我想要避免的质量问题类型,确保任何违反规则的行为都会给我带来错误,即使我的开发硬件能够支持更新的 OpenGL 版本。 然后简单地使用没有超过 OpenGL 2.1 的 OpenGL 头文件。然后,您的编译器将引发编译错误(未知标识符)。如果您要使用 GLEW,IIRC,您可以设置实际支持的版本的预处理器宏(只需查看标题:您必须反过来:您不想支持的所有内容都包含在 #define 之前glew.h 以便头球后卫开始)。 谢谢 datenwolf,这正是我想要的。

以上是关于Qt & OpenGL:如何强制使用 OpenGL 2.1?的主要内容,如果未能解决你的问题,请参考以下文章

强制 OpenGL 渲染始终在 Qt 中的相同 (Q) 线程上运行

Qt 5.6 中的 Opengl

Qt5 将 QImage 转换为 OpenGL 格式

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

MinGW版Qt如何搭建lua环境?(详细步骤)

Qt & OpenGL OS X:山狮上的 GLSL 着色器版本只有 120