全文浏览
帧时间?Fraps到底出什么问题了
有关帧延迟的讨论是个老话题了,fraps作为一款知名的FPS测试软件,不仅能获得游戏中的平均帧、最低帧等参数,还可以记录游戏的帧时间(frametime),这是游戏中每帧画面的生成时间,它用时多少决定了每帧画面渲染用时是快还是慢,也就代表了游戏运行是畅快的还是卡顿的。
但是fraps测量的帧时间也引发了一场争论,AMD从技术角度指出fraps软件测量帧延迟是有问题的,它过早地介入了3D渲染过程,Fraps可以告诉你进入渲染过程之前发生了什么,但是它无法告诉你渲染完成之后发生了什么,而真正决定游戏卡顿与否的关键就在后一个阶段上。
AMD认为fraps测量帧延迟的方式是有问题的
即便是在Fraps帧时间测试中占了上风的NVIDIA,他们也没有完全认同fraps的作用,因为基于软件的帧时间测量方式确实是有缺陷的,因为显卡渲染画面是不存在刷新率问题的,它能渲染多少就输出多少,但是目前的显示器存在刷新率问题,LCD普遍是60Hz刷新率,这意味着不论显卡渲染了多少帧画面,在显示器上都要1/60秒(16毫秒)左右才能显示一帧。
显卡的渲染时间和显示器上显示出的渲染时间是有脱节的
显卡每秒可渲染多少帧是由GPU性能决定的,而显示器的刷新率是固定的
Fraps测帧延迟其实不是那么“聪明的”
再回到Fraps上来,一帧画面从开始进入渲染管线到最终输出到显示器上有很多阶段的,fraps测量的只是帧从游戏引擎到微软DX渲染进程的时间段,比显卡发送命令和数据让GPU开始渲染的时间要早,所以fraps真正看到的只是显示器正在发生的,而真正的帧缓冲器内发生了什么是它看不到的,这是它的先天缺陷。
此外,除了测量理论上的不足,GPU渲染中经常还有丢帧(drop frame)和不完全帧(runt frame)等现象存在,fraps对这些问题也是无能为力的。
FACT:基于硬件的帧延迟捕捉系统
正是因为这些问题的存在,NVIDIA提出了一种新的基于硬件的帧延迟测试系统——FCAT(Frame Capture Analysis Tools,帧捕捉分析系统),它使用高清视频采集卡将游戏渲染输出的信号录制成视频文件,通过分析这个视频文件来获得游戏帧数相关的信息,并将最终获得的帧时间转换成可见的成绩表格。
基本原理就是这样,不过其中的一个问题在于如何在录制视频的时候分辨其中包含的帧率信息。NVIDIA的解决方式是通过在每个测试项目中注入dll文件,将游戏画面以不同的颜色标记,总计有白色、绿黄色、蓝色、红色、青色、海军蓝、绿色、浅绿色、栗色、银色、紫色、橄榄绿、灰色、紫红色、黄色及橙色16种不同的颜色,如果某个画面中缺失了某种颜色,这就意味着有丢帧现象发生,如果色带过短,这说明有不完全帧出现,而这是fraps软件所测试不到的。
16中不同颜色的色彩代表了游戏中真实发生的情况
从理论上来说,FCAT硬件系统比fraps这样的软件更加无懈可击,下面就来见识下这套系统吧。