opengl - 将 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 上下文的版本,而是设置所需的功能集。因此,例如,如果您将标志设置为 3.3,您通常会获得 4.5 或 4.6 上下文,因为这些版本通常是您的 GPU 支持的与 OpenGL 3.3 兼容的最新 OpenGL 版本。获得 OpenGL 2.1 核心上下文应该是不可能的,因为核心上下文的定义特征是它不支持某些 OpenGL 1.0-2.1 功能。所以这并不奇怪。
我认为您最好的选择是使用仅包含 OpenGL 2.1 函数的标头。示例的GLAD允许您指定要为其生成标头的版本。
推荐阅读
- cassandra - default_time_to_live 如何在 Cassandra 中删除没有墓碑的行?
- excel - 嵌套do while循环在for循环中仅在VBA中执行一次的列中的关键字搜索
- r - 如何删除geom_col周围的ggplot2背景和裁剪边距
- android - 状态栏图标白色
- python - 多个elasticsearch python客户端将批量json数据发送到单个ES集群
- dialogflow-es - Google 上的操作在模拟器上始终默认为加利福尼亚州山景城
- powershell - 如何使用 powershell 设置 IIS 的表单身份验证(system.web/authentication)的 overrideMode?
- ruby-on-rails - 如何在 Rails 中创建一个包含分组哈希数组而不是 ActiveRecord 的选择列表?
- java - Problem with line number of JTextArea and resize JTextArea texts
- docker - Docker 容器中的时间