如何在较旧的 GPU 上测试 OpenGL 应用程序?

How do you test an OpenGL application on older GPUs?

我的所有开发都是在一台相当先进的机器上进行的,但我的一些用户使用的是石器时代的机器。虚拟化较旧的操作系统和不同的 CPU 架构很容易,但我还没有找到任何方法来虚拟化较旧的 GPU。

当您开发针对旧版本 OpenGL 的程序时,您如何知道它是否可以在具有旧 GPU 的机器上运行(较低的 OpenGL 版本和较少的可用扩展)?

有GPU模拟器吗?关闭 GPU 上某些功能的方法?

跟进:

使用为特定版本的 API 生成的扩展加载器怎么样?例如,如果我为 OpenGL 2.1 版生成一个 glad 文件,即使我的驱动程序支持更高版本,这是否会限制我的上下文版本?

据我所知,不可能涵盖所有可能性。

开发应用程序时,您最好了解必要条件,包括最低 OS 版本、最低 OpenGL 版本、RAM、VRAM。
处理核心功能通常不能很好地在硬件中实现...扩展可能是一场噩梦。

尝试使用 nvidia 的 NVEmulate 我很久以前就开始使用它来模拟较新的 GPU 我没有可以随意使用但它也可以用于其他绕过(降级你的GPU)。它只模拟nvidia GPU的每个版本的exe都有不同的芯片支持。

你的问题是在旧的 gfx 卡上只有旧版本的 gfx 驱动程序,这些通常是主要问题而不是 gfx 卡本身。除非使用适当的模拟器,否则您根本无法测试...因为旧驱动程序与新卡不兼容,反之亦然。

我正在通过为 "bad" 卡(例如 Intel HD 或 GLSL[=43= 关闭多上下文等高级功能来解决这个问题] 和旧的 ATI 的一些扩展,因为你在 Windows 上有所有古怪的 OpenGL 实现......每个品牌都有自己的怪癖和如果您使用的是 OpenGL,我建议您使用 nvidia GPU。公平地说,AMD 确实加强了他们的(前 ATI)卡可用 ATI 失败的地方管理年龄)。如果你的目标是 DirecX 那么 AMD 就是 nvidia 中的错误DirectX 更改实施(可用但包含内部泄漏,导致随着时间的推移速度变慢和崩溃,因此您需要不时重新启动应用程序,您知道玩一些游戏 2 小时后的深色纹理错误...)

PS。一些 gfx 错误与 gfx 无关,例如 AMD 驱动程序极易受到应用程序中任何地方的内存泄漏的影响(即使它们与 gfx 无关)造成不相关的破坏并且很难调试。

相关:

  • What is the proper OpenGL initialisation on Intel HD 3000?
  • Determine Intel HD Graphics Card Version Via WinAPI
  • bds 2006 C hidden memory manager conflicts

ubuntu

sudo add-apt-repository ppa:paulo-miguel-dias/mesa
sudo apt update
sudo apt upgrade

如果发生冲突,请使用 dpkg -r ... 。 说 "mesa-vulkan needs mesa9 so nothing installed"

sudo dpkg  -r mesa-vulkan 

退学。

export LIBGL_ALWAYS_SOFTWARE=1
.....

在终端