您当前的位置:偶偶电脑知识网 -> 电脑硬件 -> 电脑内容-> 真实再现 Unamed Direct3D Benchmarking Tools

真实再现 Unamed Direct3D Benchmarking Tools

  1.关于显卡测试中存在的问题

  现在各种显卡测试文章俨然已成为广大用户选购显卡的重要参考。但随着驱动作弊的争论,某些显卡测试中的成绩受到了置疑。一方面知名的测试游戏和程序毕竟有限,很容易被显卡厂商针对它们在驱动里做针对性的优化。另一方面这些测试游戏和程序在进行测试时,所有的运动轨迹都是固定的,这样也容易出现消减运动轨迹之外的场景渲染来提高测试成绩的现象。就是在这种情况下,Fraps出现了。它可以在游戏中显示即时速度,并能给出游戏的最终平均速率。于是“Fraps结合大量游戏”这种更贴近最终用户的测试组合就开始频繁出现在各个测试中。但Fraps有一个重要缺陷:由于普通游戏都是没有测试命令的,我们要用Fraps衡量不同显卡在同一游戏中的速度时,就只能依靠测试者本身手动控制游戏,尽量保证测试中运动轨迹的一致性。而这就不可避免地会出现一定的人为误差。

  2.能精确回放3D游戏运行的软件

  现在,一款可以精确回放3D游戏运行过程的测试软件出现了。它可以忠实记录测试者在游戏中的所有动作,所经路径,并正确回放。由于它是新鲜出炉,所以到目前它并没有正式的名称,作者称它为“Unamed Direct3D Benchmarking Tools”(以下简称UDB)。UDB要求的运行环境是WinXP,可以支持DX8、DX9的Direct3D游戏进行测试。这已经完全可以满足主流显卡的测试要求了。它的下载地址是http://www.users.on.net/triforce/d3dbench.zip。

  那么UDB是如何实现游戏运行过程的精确回放呢?简单地说,UDB会自动捕捉所测试游戏的Direct3D输出,包括所有的顶点缓冲、索引缓冲、渲染动作和函数调用,并将它们按顺序回写到硬盘当中。在测试时它又可以自动调用这些以文件形式存放的数据,通过DX8或DX9再次进行渲染还原。正是这种使用原有的数据通过Direct3D进行原汁原味的还原的过程,保证了UDB作为测试软件的可靠性。

  3.如何使用

  现在就让我们使用近期的DX9大作──Far Cry来体验一下这款测试软件的威力。UDB包括LCSplayer.exe、D3DIntercepts.dll等共7个文件。首先我们要把它的3个库文件(后缀名为dll的文件)放在FarCry.exe的同一目录下 (为了方便,我是将这个测试软件的所有的文件都放在了FarCry.exe的同一目录下)。然后开始进行游戏,UDB会自动开始记录测试者的游戏过程,并随游戏的结束自动停止。

  在游戏的过程中它会以非常快的速度在目录中自动生成bufstream.lcs、comstream.lcs、texstream.lcs三个数据文件,它们里面就存放了游戏调用的原始数据,所以体积特别庞大,几分钟的游戏过程,起码要存放数百兆字节的原始数据。

  ①设置缓存

  正式测试时我们要先执行LCSplayer.exe,出现如下测试调用界面(图1)。

  我们首先选择回放测试需要使用的数据文件。因为前面我们已经说过,这些自动捕捉的数据文件特别庞大,测试时又需要把这些数据调入内存或虚拟内存中,所以为了降低对内存的需求,默认是仅仅使用“ComStream”,但这样会产生2%~5%的误差,所以在正式测试时我们需要将“BufStream”和“TexSteam”也勾选上。接着我们选择回放模式,“Demo”模式会以测试者正常游戏的速度进行回放,而“Benchmark”模式就是以尽可能快的速度回放游戏,并产生记录文件。这正是我们测试需要的模式。点击“Play”测试就正式开始了。

  ②解读测试结果

  测试结束后,UDB会在目录中生成一个“Benchmark.csv”的数据文件,可以使用Excel打开,里面记述了每帧速度、平均速度等一系列测试结果。我们还可以将这些结果用Excel制作成更直观的曲线图表。

  虽然软件的使用方法比较简单,但最终结果的解读还是有一定技巧的。我们前文说过,UDB在测试时,是以尽可能快的速度进行游戏回放,就像我们看到的电影快进一样,这个速度在该软件中叫做Benchmark速度,在图2中以红色表示。而一般测试则是记录的游戏正常进行速度,这个速度在软件中叫做Recorded速度,在图2中以蓝色表示。

  很明显,虽然它们的速度变化趋势相同,但Benchmark速度是要快于Recorded速度的。所以我们使用UDB测出的速度一般是要高于Fraps之类软件测出的速度。而且要注意,我们也不能拿Recorded速度和Fraps测出的速度进行对比,UDB自动记录的特性决定了它会记录一部分帧速度很高的游戏主界面,所以Recorded的平均速度仍然要高于Fraps测出的平均速度。在显卡对比测试中我们直接采用Benchmark.csv中的Benchmark平均帧速度作为成绩记录即可。当然我们也可以通过观察实时帧数的突变来找出真正开始游戏的时刻,然后用真正游戏的总帧数除以游戏时间来求出最终速度。这些必要的数据在Benchmark.csv文件中都可以查到。

  3.注意事项

  此外我们仍要注意一些使用问题。首先,制作游戏录像时,不要在游戏中进行任何设置调整,要迅速直接进入游戏。这是因为UDB会记录所有的游戏过程,包括设置调整。所以在设置调整中花费了时间的话会影响测试成绩的准确性。同样,游戏的片头动画也要迅速跳过。其次,不要记录太长时间的游戏内容,时间长了占据的硬盘空间太大,对测试时内存容量的要求也会更高。第三,每次测试都会自动覆盖Benchmark.csv这个结果文件,要注意及时改名保存。最后,使用UDB要在尽可能“干净”的系统中,因为笔者测试发现,安装软件太多的系统往往会在使用UDB时出现这样或那样的问题。

  4.不足之处

  现在我们来谈谈这个软件的一些问题。比如:它不支持OpenGL游戏;没有开始和结束快捷键,因而无法排除帧速度很高的游戏主界面的轻微影响;在游戏的支持上还有一些问题,有些游戏可能会出轻微的图像错误,兼容性仍需加强,从目前的测试来看不是所有的DX8或DX9都可以使用这个测试软件。以上三个问题,除了第一个作者已经声明将在下一个版本中改进,其他两项如不能改进必将影响UDB的普及使用。最后提醒大家,由于UDB完成游戏录像后就能不再依靠游戏进行测试,所以我们可以在录像后就把原有游戏删除,反正只要保证bufstream.lcs、comstream.lcs和texstream.lcs这三个记录文件存在就可以进行测试。