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?的主要内容,如果未能解决你的问题,请参考以下文章