从后缓存到显示器
最近在看D3D的架构,在这过程中对帧率这个一直认为很简单的东西有了更多的理解。在过去看来,帧率就是显卡渲染一帧所用时间的倒数,现在看来远远不是这个样子。
要真正理解这个问题要从绘制数据从显存中到屏幕的这一个过程来说起,下图就是这个过程
显存中存在前后缓存,前缓存就是屏幕上最终看到的像素,而后缓存是绘制使用,后缓存绘制好一帧,通常就交换一次,写给前缓存,而显示器则从前缓存不断的读取数据。
交换帧率与刷新帧率
通常我们很在意渲染的效率,其实就是绘制的效率,这就是图中的f1,也成为交换帧率,f1决定了显卡一秒能绘制多少次,以前一直以为这就是用户的帧率了,其实不是,因为还有其他因素。
我们看到显示器读取前缓存也存在一个频率,即f2,f2也被称为显卡的刷新频率,即显卡按照多少的频率去讲前缓存的数据给显示器绘制一次,它不管前缓存的数据是否是新的还是旧的。由此可见我们最终用户看到的帧率是f1 和 f2的共同结果。实际的帧率f应该表述为显示器所能表现的缓存交换帧率,即在1秒内有多少个后缓存的传递到了显示器。这样看f=min(f1,f2),即受这