Direct3D 设备(Direct3D 9)

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

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

direct3d 设备体系结构的 关系图

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

  • 硬件加速光栅化和带硬件和软件顶点处理的着色的 hal 设备
  • 参考设备

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

应用程序创建的 Direct3D 设备必须与运行应用程序的硬件的功能相对应。 Direct3D 通过访问计算机上安装的 3D 硬件或通过模拟软件中 3D 硬件的功能来提供呈现功能。 因此,Direct3D 为硬件访问和软件仿真提供设备。

硬件加速设备比软件设备提供更好的性能。 hal 设备类型适用于所有 Direct3D 支持的图形适配器。 在大多数情况下,应用程序面向具有硬件加速且依赖于软件仿真来容纳低端计算机的计算机。

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

由于 Direct3D 9 随附的软件和引用设备的行为与 hal 设备的行为相同,因此创作用于 hal 设备的应用程序代码将处理软件或引用设备,而无需修改。 请注意,虽然提供的软件或引用设备行为与 hal 设备的行为相同,但设备功能确实有所不同,并且特定软件设备可能实现一组更小的功能。

行为

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

入门