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

标签 opengl testing gpu

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

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

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

跟进:

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

最佳答案

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

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

我正在通过关闭诸如Intel HD 或GLSL 等“坏”卡的多上下文等高级功能来解决这个问题,以及一些针对旧的ATI 的扩展 因为你在 Windows 上有所有奇怪的 OpenGL 实现......每个品牌都有自己的怪癖,如果你正在使用 OpenGL 我建议目标 nvidia GPU 的。公平地说,AMD 确实加强了他们(以前的 ATI)显卡的可用性,这是 ATI 多年来未能做到的)。如果您的目标是 DirecX 那么 AMD 是因为 nvidiaDirectX 实现中存在错误以进行更改(可用但包含内部泄漏,导致随着时间的推移速度变慢和崩溃,所以你需要不时地重新启动应用程序,你知道玩一些游戏 2 小时后的深色纹理错误......)

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

相关:

关于opengl - 如何在较旧的 GPU 上测试 OpenGL 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42846618/

相关文章:

cuda - __CUDA_ARCH__ 宏的行为

r - 是否有 R 命令使 Keras Tensorflow-GPU 在 CPU 上运行?

python - Tensorflow 相同的代码,但从 CPU 设备到 GPU 设备得到不同的结果

c++ - OpenGL + SDL2 黑屏

测试阶段,冒烟测试在哪里?

apache-flex - 基于 FLEX 的应用程序的自动化测试

grails - "Could not find ApplicationContext, configure Grails correctly first"

c++ - 为什么从上方直接向下看时不渲染形状?

opengl - 简单的 opengl 代码(渲染到纹理)适用于 Mac,但不适用于 ubuntu

opengl - OpenGL中的顶点限制