【问题标题】:glewIsSupported(GL_VERSION_3_1) return true when the machine does not support opengl 3.1glewIsSupported(GL_VERSION_3_1) 机器不支持opengl 3.1时返回true
【发布时间】:2016-06-24 12:54:17
【问题描述】:

我用glewIsSupported(GL_VERSION_3_1)看机器是否支持opengl 3.1版本。它返回 true,但我知道机器只支持高达 2.1,因为我通过 glxinfo 检查它。我想检查 3.1 前向兼容性配置文件而不是向后兼容性。

  1. 如果检查版本 >=3.2,我是否可以告诉 glewIsSupported 检查前向兼容性配置文件或核心配置文件
  2. 我还尝试了对 opengl 3.2 和 opengl 3.3 的支持。它对 opengl 3.2 返回 true,但对 opengl 3.3 失败。因此,如果它检查兼容的配置文件,不应该两者都通过或两者都失败。

如果glxinfo 说它只支持最高 2.1,我认为这应该很简单,glewIsSupported(GL_VERSION_3_1) 应该返回 false。为什么返回true?

【问题讨论】:

  • 好吧,glewIsSupported 不关心配置文件和向前/向后兼容性。它实际上告诉您的是,在 GL 3.1 中添加的 GL 功能是可用的,这对于 GL3.2 cooe 配置文件上下文仍然适用。
  • 但 3.3 失败。 glxinfo 也只显示 2.1 支持。你不觉得肯定有什么问题吗?
  • glxinfo(至少在最近的版本中)将报告旧 GL 版本和核心配置文件版本。我完全不清楚您的实现实际支持什么。
  • 对于 GL 3.1,您可以测试兼容性扩展。通常,在创建上下文之前,您无法知道支持的内容。这就是为什么有一个窗口管理器扩展可以让您请求特定版本的原因。几乎值得假装 3.1 从未存在过,因为它造成的所有复杂性。

标签: opengl glew


【解决方案1】:

如果检查版本 >=3.2,我是否可以告诉 glewIsSupported 检查前向兼容性配置文件或核心配置文件

GLEW 是经过修改的 BSD 许可的。所以只需更改代码。或者更好的是,编写自己的函数来完成相同的工作。

无论如何,不​​,没有 GLEW 选项。

我想为 wondows 和 linux 使用一个代码。

你不能。

上下文创建是操作系统围绕 OpenGL 的一部分。因此,它不能是跨平台的。所以要么你将不得不使用别人的上下文创建系统,要么你要去

仅供参考:X Windows 具有 GLX_ARB_create_context。显然它在 Windows 上不可用,但这就是您在 Linux 上测试它的方式。

【讨论】:

  • 我认为 glewIsSupported 检查兼容配置文件和所有内容是错误的。我找不到任何文件来支持这一点。所以我认为 glewIsSupported(GL_VERSION_3_1) 应该失败,因为 glxinfo 说它只支持 2.1 版本。我也用更多信息更新了这个问题。你知道为什么 glewIsSupported 会返回 true 吗?
猜你喜欢
  • 1970-01-01
  • 2014-04-29
  • 2014-07-29
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
相关资源
最近更新 更多