噱头or趋势?1GB显存实战变态DX10游戏
显卡显存的使用一般都比较恒定,除非是专业的图形工作站用户,否则2D情况下不会使用太多显存,真正对显存提出更高要求的是一款款大型3D游戏!
● 显存里都存储些什么东西?
一般来说,显存中所存储的数据主要由以下5部分组成:帧缓存(Frame buffer)、后台缓存(Back buffer)、Z轴缓存(Z-buffer)、纹理数据和几何数据。
帧缓存里存放的就是我们实际将在屏幕上看到的内容,这部分的容量计算方式大致为:屏幕宽度方向上的像素数目×屏幕高度方向上的像素数目×每个像素所用的字节数量;
后台缓存顾名思义,就是第2帧缓存。当屏幕上显示出当前帧缓存的内容时,下一帧的显示内容已经被存放在后台缓存里了。而当后台缓存的内容显示时,帧缓存则写入第3幅画面……如此交替工作。因此,后台缓存的计算方式与帧缓存完全相同。但是后台缓存使用量可能会比帧缓存还要大,尤其是在游戏中FPS很高时!
Z轴缓存用来记录像素到屏幕的距离,这样当两个显示区域中的像素在屏幕上重叠时,如果新绘制的像素其Z值比Z值缓存中记录的数据小,那么就不必重新绘制此像素。这可以减轻GPU的计算量。类似于帧缓存,Z轴缓存其容量计算公式为:屏幕宽度方向上的像素数目×屏幕高度方向上的像素数目×每个像素Z值缓存所用的字节数量。
纹理数据以及几何数据因程序而异,涉及的方方面面非常复杂,无法定量计算。
● 显存在游戏中的使用情况更加复杂:
以上几项分析都是在没有打开FSAA(全屏抗锯齿)的情况下计算出来的。FSAA由于要进行多倍取样,因此如果打开这一特性,程序所需的显存容量理论上将成倍增长。而使用256MB显存和256bit的传输位宽,则能够很好地缓解这种状况。另外,近期的3D图形技术发展迅猛,像HDR、各种阴影渲染等最新技术一旦打开,显存使用节节攀升!
显存容量决定存储图形数据信息的多少,构成显存容量的几大部分当中,帧缓冲数据和Z缓冲数据的大小在同一款游戏中一般是固定的,所占用的显存容量并不是很多,而纹理数据大小占据了相当大的一部分,而且纹理数据的大小会随着渲染画面的复杂程度而改变!
例如在3D游戏中不同分辨率和画质设定所产生的纹理数据变化非常大,在使用高分辨率、全屏抗锯齿、各项异性过滤以及HDR的情况下,超大的纹理数据会对显存容量的需求非常大,假如纹理缓存不够用,要么重新清空显存后继续加载数据,要么调用速度较慢的系统内存充当显存,不敢怎样都会对显卡性能或多或少造成影响,出现FPS下降甚至画面停顿的现象,严重影响玩家心情。因此目前256MB显存已经逐渐成为中端甚至主流显卡的标配!