【问题标题】:Setting the OpenGL version to 2.0 appears to do nothing, as 3.3+ features still work将 OpenGL 版本设置为 2.0 似乎无济于事,因为 3.3+ 的功能仍然有效
【发布时间】:2021-06-01 23:43:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 与 Mesa 的 MESA_GL_VERSION_OVERRIDE envvar 一起变得厚脸皮 :)
  • 部分虚拟机软件只能使用OGL
  • @Ripi2 你还有更多信息吗?
  • 正如 sidi77 回答的那样,当您要求 OGL 2.1 时,一些驱动器会为您提供该版本,而其他驱动器则提供更高版本。您可以尝试在着色器中将1.20 设置为#version,并将GLFW 上下文命令设置为2.1,然后查看它返回的内容。 OTOH,一个曾经只支持 OGL 2.1 的 VM 是 VirtualBox
  • @Ripi2 非常感谢,这就是我正在寻找的信息,正在调查

标签: opengl


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2018-01-26
    • 2012-09-07
    相关资源
    最近更新 更多