看MSDN上说,可以在9_1、9_2、9_3、10_0、10_1的硬件基础上创建D3D11设备。
比如我以Direct9.0a的显卡创建D3D11设备,也就是用9_1的选项创建了D3D11设备。
调用Direct9.0a的特性和调用Direct11的特性,计算机内部分别是怎样运行的呢?
以Direct9.0a的显卡作为底能的D3D11设备在使用Tessellation的时候会调用失败吗?

解决方案 »

  1.   

    Direct3D 10 and Direct3D 11 on Direct3D 9 Hardware (D3D10 Level 9)Available in this SDK through Direct3D 11 and eventually also through Direct3D 10.1, the Direct3D API can target most Direct3D 9 hardware as well as Direct3D 10, Direct3D 10.1 and Direct3D 11 hardware. This is achieved by providing the Feature Level mechanism, which groups hardware into six categories depending on functionality: 9_1, 9_2, 9_3, 10_0, 10_1 and 11_0. A card only meets a feature level if it is fully compliant to that level, and each level is a strict super-set of those below it. Functionality is minimally emulated to assure no unexpected performance cliffs are encountered. Thus, features like Geometry Shaders are not available for Direct3D 9 level targets.D3D11 Reference RasterizerThe Reference Rasterizer provides a gold-standard rasterization implementation for evaluation of Direct3D 11 features not yet available in hardware. The Reference Rasterizer is also provided as a way to verify a specific hardware implementation's accuracy to the rasterization standard. The reference rasterizer is designed for correctness, not performance. To create a reference device, simply pass the D3D_DRIVER_TYPE_REFERENCE flag at device creation.看来10Level9在调用Level10的功能的时候是返回失败的。Level10还得D3D_DRIVER_TYPE_REFERENCE
      

  2.   

    我理解是这样,也不一定对。
    DX11这个软件版本只要满足 Win7等要求总是有效的,但是在不同的硬件平台上发挥的效能不同,所以他把硬件分了6个档次,最后还有一个REF可以在任何情况下使用。
    而创建设备是开发人员的事,先创建DX11设备,这种情况是比较理想的,软件硬件都是DX11,如果不能创建见,就退而求其次,创建DX10设备,这样虽然你还是使用DX11但硬件支持只达到DX10水平,一些特殊应用就可能不支持了,以此类推。
    楼主说的“比如我以Direct9.0a的显卡创建D3D11设备”是否应该这样说:在DX11平台上创建DX9设备。
    我理解的不一定对啊,也是刚学。
      

  3.   

    看楼上仁兄的口型,你理解的很对。
    有的游戏可以充分发挥DX11的硬件效果。比如《尘埃2》,可以在DX11显卡上发挥高特效,考虑有的游戏玩家只安装有DX10的显卡,《尘埃2》可以提供一个选项,玩家可以选择让游戏程序在DX11平台上创建DX10的设备。当然,也就只能看到DX10仅有的特效了。
    想看DX11特效,只能升级显卡。
    这样的优点是:同样一款游戏,可以根据玩家电脑的配置情况给出相应档次的特效支持。DX11显卡的玩家可以享受到完全特效的乐趣。DX10显卡的玩家虽然无法看到全部特效,但是也可以根据自己的硬件条件,流畅的运行游戏。
    使用D3D_DRIVER_TYPE_REFERENCE的程序不能发布,只能在安装有SDK的系统中运行。
    D3D_DRIVER_TYPE_REFERENCE将完全软件模拟Direct11环境,软件提供全部的DX11的功能。
    WARP10就是让创建了DX11设备的游戏运行在DX10或者更低级别的显卡上。如果只有DX10显卡的玩家,把《尘埃2》设置成DX11的特效,WARP10将会完全CPU模拟DX11,玩家就可以看到DX11特效了。就是游戏的速度太慢了。速度和D3D_DRIVER_TYPE_REFERENCE一样。但至少玩家可以看到DX11特效。