转载请注明出处为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。
例子 | 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插件。
Comments