DirectX11 driver类型浅析

在DirectX 11中,创建设备时可以指定以下几种类型的driver。

  D3D_DRIVER_TYPE_UNKNOWN     = 0,
  D3D_DRIVER_TYPE_HARDWARE    = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ),
  D3D_DRIVER_TYPE_REFERENCE   = ( D3D_DRIVER_TYPE_HARDWARE + 1 ),
  D3D_DRIVER_TYPE_NULL        = ( D3D_DRIVER_TYPE_REFERENCE + 1 ),
  D3D_DRIVER_TYPE_SOFTWARE    = ( D3D_DRIVER_TYPE_NULL + 1 ),
  D3D_DRIVER_TYPE_WARP        = ( D3D_DRIVER_TYPE_SOFTWARE + 1 ) 

我们分别来解释一下每种driver的含义和用法。

D3D_DRIVER_TYPE_UNKNOWN

MSDN上只有一句话,The driver type is unknown, 至于用在何时,也不得而知。

D3D_DRIVER_TYPE_HARDWARE 

这是硬件类型的driver,这种类型支持硬件加速。且以硬件实现大部分D3D功能,是所有driver类型中性能最好的。这是我们编写应用程序时应该使用的driver类型。该类型并不能保证支持所有的D3D特性,所以如果显卡不支持部分功能,就以软件实现代替。该driver类型通常是指HAL,Hardwar Abstraction Layer-硬件抽象层。

D3D_DRIVER_TYPE_REFERENCE 

这种类型是用纯软件实现D3D的特性,与硬件驱动类型不同,该类型实现了所有的D3D特性,但是毕竟是软件实现,所以速度很慢,基本上不能用于应用程序中,所以这种类型的驱动基本用于测试D3D功能,比如你的显卡不支持某个D3D特性,你就可以使用Reference driver来测试该功能的行为是否正确,该类型还有一个用途就是Pre-release,比如,D3D的某个新特性还没有交付给显卡厂商进行生产,但是我们可以通过已有的显卡来测试这个特性,这是就要使用reference driver。该类型与后面的software driver类型的区别是,software driver可用用于最终发布的应用程序,且不需要DX SDK支持,只需要run time library即可。相同点是,两者都是软件实现。该类型需要DX SDK支持。

D3D_DRIVER_TYPE_NULL

该类型本质上是Reference driver,但是没有渲染功能,这个类型是为了调试非渲染类型的API而设置的,所以该类型不适合用于发布应用程序。需要DX SDK支持。

D3D_DRIVER_TYPE_SOFTWARE

该类型使用软件方式实现D3D特性,速度慢,在硬件加速不可用时,程序使用此方式进行渲染。

D3D_DRIVER_TYPE_WARP

WARP-Windows Advanced Rasterization Platfor,这是D3D 11新引入的一种驱动类型,属于高性能的software renderer。详情看这里

References

D3D_DRIVER_TYPE

WARP

http://stackoverflow.com/questions/12703228/whats-the-difference-between-warp-drivers-reference-drivers-and-software-driver

==

你可能感兴趣的:(driver)