转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=200

KlayGE 3.8.0开始正式支持D3D10和D3D11,可以在不改任何上层代码的情况下切换D3D9,D3D10,D3D11和OpenGL四个渲染插件。于 是,这给了我们一个比较性能的机会。本文着重比较了D3D9和D3D10两个插件的性能。由于目前(2009年4月)市面上还没有支持D3D11的硬 件,D3D11插件只能通过D3D11 Level 10在支持D3D10的硬件上执行的,性能也就和D3D10几乎相同,遂不必多讨论。

表1列举了KlayGE现有例子在D3D9和D3D10两插件下得到的fps数据,并由此计算出D3D10的提升。

运行的平台:Pentium Core2 2.3GHz、4GB DDR2-800、Geforce 8800GT/185.66驱动,操作系统:Vista SP1 64bit。

表1. 两插件fps对比
例子 D3D9 (fps) D3D10 (fps) D3D10的提升
Ascii Arts 1784 1828 2.47%
Cartoon 961 979 1.87%
Deferred Shading 150 147 -2.00%
Depth of Field 152 152 0.00%
Depth Peeling 406 350 -13.79%
Distance Mapping 1517 1533 1.05%
Fractal 1425 1467 2.95%
GPU Particle System 57 62 8.77%
Instancing 477 498 4.40%
Model Viewer 1979 2271 14.75%
Parallax 3066 3219 4.99%
Particle System 705 734 4.11%
Procedural Texture 852 1138 33.57%
Refract 712 713 0.14%
Shadow Cubemap 1033 1061 2.71%
Text 863 910 5.45%
Vertex Displacement 3734 4012 7.45%
Video Texture 724 711 -1.80%

从表1可以看出,在绝大部分情况下,如果算法和效果相同,D3D10的性能要高于D3D9。可见,得益于API设计的巨大进步,D3D10的runtime/driver性能优于D3D9。

由此可以看出,在Vista下使用D3D10确实有利于性能的提高。在新硬件上,D3D1x更能发挥出硬件的能力。

在未来的KlayGE中,D3D9和D3D10插件都会被抛弃,只留下D3D11一个D3D插件,通过D3D11 Level 9或D3D11 Level 10来在不支持D3D11的硬件上渲染。对于不支持D3D11的Windows XP,可以使用OpenGL插件。