在龚敏敏的 《关于D3D11,你必须了解的几件事情系列》文章里看到DX11支持DX9特性的细节,特别在DX11的例子中试了一下。
我的显卡是Geforce GT440,跑DX11的例子没有大问题,修改了一下DXSDK里的最简单Shader例子,跑出来的结论是,DX9_3可以创建设备,但是在CreateVertexShader地方失败了,尝试将Shader编译版本降低到VS_2_0也是持续失败,于是乎证明了DX11的接口及引擎不能简单通过调节FEATURE_LEVEL来变成DX9级别跑, 最关键的是,DX11不支持XP,XP下跑DX11的例子直接就报找不到DLL。
因此,我觉得DX11里的DX9的兼容级别很蛋疼,毫无用处的东西。
龚敏敏的KlayGE引擎在某此升级时直接删除了DX11以前的所有插件,只使用OpenGL来兼容XP, 可喜的是OpenGL 4.0没有微软那么霸道及商业化,可以为XP提供DX11级别的特性,这才是趋势。