Direct3D 设备 (Direct3D 9)

Direct3D 设备是 Direct3D 的渲染组件。 它封装并存储呈现状态。 此外,Direct3D 设备执行转换和照明操作,并将图像光栅化到图面。

体系结构上,Direct3D 设备包含转换模块、光线模块和光栅模块,如下图所示。

direct3d 设备体系结构的图示

Direct3D 目前支持两种main类型的 Direct3D 设备:

  • 支持硬件加速光栅和着色以及硬件和软件顶点处理的 hal 设备
  • 参考设备

可以将这些设备视为两个单独的驱动程序。 软件和参考设备由驱动程序表示,而 hal 设备由硬件驱动程序表示。 利用这些设备的最常见方式为:使用 hal 设备传送应用程序,使用参考设备进行功能测试。 这些设备由第三方提供,用于模仿特定设备,例如尚未发布的开发硬件。

应用程序创建的 Direct3D 设备必须与运行该应用程序的硬件的功能一致。 Direct3D 提供渲染功能,方式是通过访问计算机中安装的 3D 硬件或模仿软件中 3D 硬件的功能。 因此,Direct3D 提供设备以访问硬件和模仿软件。

硬件加速设备的性能远远高于软件设备。 所有支持 Direct3D 的图形适配器均可使用此 hal 设备类型。 在大多数情况下,应用程序瞄准具有硬件加速且依赖软件模拟来容纳低端计算机的计算机。

软件设备并不总是支持与硬件设备相同的功能,但参考设备除外。 若要确定支持哪些功能,应用程序应始终查询设备功能。

由于与 Direct3D 9 一起提供的软件和参考设备的行为与 hal 设备的相同,编写的用于 hal 设备的应用程序代码将不经修改直接用于软件或参考设备。 请注意,虽然提供的软件或参考设备行为与 hal 设备的行为相同,但设备功能确实有所不同,并且特定软件设备可能实现一组小得多的功能。

行为

使用 Direct3D 可以指定设备的行为以及设备的类型。 IDirect3D9::CreateDevice 方法允许一个或多个行为标志的组合来控制 Direct3D 设备的全局行为。 这些行为指定在 Direct3D 的运行时部分中维护和不维护的内容,设备类型指定要使用的驱动程序。 尽管某些设备行为组合无效,但可以将所有设备行为用于所有设备类型。 例如,在使用 D3DCREATE_PUREDEVICE 创建的设备上指定D3DDEVTYPE_SW是有效的。

入门