如何对软件光栅化器进行基准测试

时间:2009-09-29 16:19:07

标签: c++

好的,我已经开发了一段时间的软件光栅化器,但不知道如何进行基准测试以确定它实际上是否有用....我的意思是说你可以渲染X量的顶点蚂蚁Y帧每秒,分析这些数据以查看它是否有用的好方法是什么?而不是有人说 “30 fps 1光是好的”等?

2 个答案:

答案 0 :(得分:3)

你想测量什么?我建议填充率和三角率。填充率基本上是光栅化器每秒可以喷出的像素数,三角形率是光栅化器+仿射变换函数每秒可以推出多少个三角形,与填充率无关。这是我对测量两者的建议:

要测量填充率而不从三角形设置所用的时间获得 noise ,请仅使用两个三角形,形成四边形。从较小的尺寸开始,然后以较小的间隔增加它。您最终应该找到一个最佳大小,相对于一秒的渲染时间。如果不这样做,您可以使用全屏三角形对进行混合,这是一个非常慢的操作,并且只会燃烧填充物。填充物变为渲染三角形的宽度x高度。例如, 4百万像素/秒

要测量三角形率,做同样的事情;这次仅适用于三角形。从两个小三角形开始,增加三角形的数字,直到渲染时间达到一秒。三角形/变换设置使用的时间在小三角形中比用于填充它的时间更明显。单位是三角形计数/秒

此外,渲染帧的总时间也可能相当。帧的渲染时间是全局时间的导数,即 delta time 。如果所有帧的delta时间都是常量,则delta时间的倒数是帧每秒的数量。

当然,要使这些数字在光栅化器中具有中等可比性,您必须使用相同的技术和功能。比较使用逐像素照明的光栅化器与使用平面着色的另一种光栅化器的数字没有多大意义。分辨率和颜色深度也应相等。

至于优化,获得一个合适的分析器应该可以解决问题。 GCC有GNU profiler gprof。如果你想在光栅化器中对聪明的事物进行优化,请将其作为一个单独的问题。我会尽我所能回答。

答案 1 :(得分:1)

如果您想确定它是否“任何好”,您需要将光栅化器与其他光栅化器进行比较。 “30 fps with 1 light”可能非常好,如果没有其他人能够超越,比如10 fps。