Warm tip: This article is reproduced from serverfault.com, please click

c++-渲染和测试,驱动程序重要吗?

(c++ - Rendering and testing, does the driver matter?)

发布于 2020-12-06 19:08:17

我正在开发一个渲染引擎(很小的一个啊哈)

我想编写回归测试,以确保添加新功能时不会引入错误。

如果我开发了计算着色器,或将数据从缓冲区传输到缓冲区的工具,则测试很容易。我们填充第一个缓冲区,然后在传输后检查第二个缓冲区是否具有相应的数据。

但是对于渲染,似乎很难...我最终得到了几种解决方案

  1. 完全没有测试
  2. 截取屏幕截图,然后在测试开始时显示屏幕截图和渲染,并要求用户(测试人员)检查结果是否良好
  3. 截取屏幕截图,然后在测试开始时将渲染与屏幕截图进行比较。

第一个解决方案是……不是解决方案。第二种解决方案看起来不错,但是我觉得很遗憾我们失去了自动的东西...

第三种解决方案似乎是最好的解决方案。但是,要真正发挥作用,就意味着一种算法(如果在Nvidia卡,AMD,intel或...上执行)必须产生完全相同的结果。

因此,这里的问题是,我们可以依靠屏幕截图和一点一点的比较来进行回归测试吗?还是取决于驱动程序和/或制造商?

Questioner
Antoine Morrier
Viewed
0
Nicol Bolas 2020-12-07 03:24:10

Vulkan和OpenGL都不对跨不同实现的二进制相同结果提供任何保证。甚至同一张卡的驱动程序更新也会产生不同的结果。

对于此类事情,你可以做的最好的事情就是获得与预期结果“接近”的结果。