首页 > 解决方案 > 将 OpenGL 版本设置为 2.0 似乎无济于事,因为 3.3+ 的功能仍然有效

问题描述

有人要求我使用 OpenGL 2.x 进行测试,因为他们的硬件仅支持 OpenGL 2.1。

我想我会通过在 GLFW 中设置窗口提示来尝试使用 2 和 0 的主要/次要版本。

问题是我仍然#version 330在我的着色器中使用它,它可以工作。但是,当我离开核心配置文件时(偶然),它不会让我使用 GL 版本 2 的提示。这似乎表明我的版本选择正在做某事,但不是我所期望的。

我想将自己限制在 2.1 以查看我的应用程序是否可以运行,如果不能运行,请查看我可以更改哪些内容以使其正常运行。问题是我没有任何 2.1 硬件,因为我的计算机都是 2015 年或更高版本。

如果我尝试使用它不支持的功能,有没有办法可以以某种方式模拟 2.1(在 Windows 上)并让它崩溃/死机?显然我使用的提示没有帮助。

标签: opengl

解决方案


据我所知,主要/次要版本标志不会设置您的 OpenGL 上下文的版本,而是设置所需的功能集。因此,例如,如果您将标志设置为 3.3,您通常会获得 4.5 或 4.6 上下文,因为这些版本通常是您的 GPU 支持的与 OpenGL 3.3 兼容的最新 OpenGL 版本。获得 OpenGL 2.1 核心上下文应该是不可能的,因为核心上下文的定义特征是它不支持某些 OpenGL 1.0-2.1 功能。所以这并不奇怪。

我认为您最好的选择是使用仅包含 OpenGL 2.1 函数的标头。示例的GLAD允许您指定要为其生成标头的版本。


推荐阅读