如何在较旧的 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
.....
在终端
我的所有开发都是在一台相当先进的机器上进行的,但我的一些用户使用的是石器时代的机器。虚拟化较旧的操作系统和不同的 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
.....
在终端