文明5渲染分析-2 d3d9时的drawall(Civilization V Rendering Analysis 2 d3d9 drawcall)

看几张图了解下显示不同规模内容时会有多少渲染量。三幅截图的drawcall数分别是847, 1710, 6566,在双核i3+GTX660下还是能跑满60fps的,但是6k多drawcall时cpu load已经要跑满一个核达到瓶颈了。

再仔细剖析能看出dx9下应用的节省drawcall的方式并不多,尤其是带骨骼动画的单位。以第二幅图为例看下dc都花费在哪里,主要列下量多的

一上来60个dc画小地图

接着600多个dc再画阴影,地表的单位基本都投射阴影,包括人物、建筑、动物、树林

50多个画地形

近300个dc用于渲染城市,应该是包括了只看到一部分甚至没有看到的城市

30多个dc在渲染树林,这个是效率最高的了,面积那么多才只用了这些dc,前文讲过它的方法

近250个在渲染地表建筑

100个渲染人物,其中包括屏幕外的一些。这些人物是每人一个dc,带骨骼动画。

200多个在渲染UI

总结

dx9下基本是暴力渲染出来的,只有树林感觉比较取巧。dc大头是实时阴影、地表静态物体,再者是UI和动态物体。虽然暴力,但是提交dc的效率还是很高的,每个模型顶点数量控制的比较好,大概1k面左右,像素占得不多。

想起2010年的时候吧,看wow的dc也是很高的,大概3k,大量模型的面数都在500左右,相当整齐,最终帧数还是很高的,不像自家游戏不到1k dc就很卡了。

推荐阅读更多精彩内容