附录A 2. Direct3D的设备

时间:2022-08-13 23:45:16
·附录A 2. Direct3D的设备 (蔡军生 版权所有)
  在Direct3D应用程序里,Direct3D的设备是非常重要的。因为Direct3D的设备提供矩阵变换,三维图像渲染和三维图像光栅化显示。这些操作都需要大最运算,目前大部份集中在显卡中处理。Direct3D的设备就是硬件显卡的一种抽象,当然它是高于硬件的,因为它不但可以直接使用硬件功能,还可以用软件来模拟显卡不存在的功能。
  要使用Direct3D的设备,就要根据不同类型,选择合适的设备来创建。显卡在应用程序里不是独占的,就会造成设备丢失。因此,应用程序要处理这种情况,当发现丢失之后,就要去尝试恢复设备,如果设备不能恢复就要当作错误处理。
  在使用设备之前,还要检查设备是否支持应用程序要求支持的功能,如果不支持就要退出程序。如果不退出,整个系统就有可能出错。同时检测硬件支持什么样的顶点处理,是否支持硬件,或软件,或软件硬件混合,或只能其中一种等等。根据不同的处理,程序作相应的优化。还要把顶点的数据合适地传送给相应的设备,否则就处理不了。
  在Direct3D的设备里有两大类,一类是HAL设备(HAL Device),一类是基准设备(Reference Device)。HAL设备主要用于速度要求高,实时处理快的程序里,因为它是用硬件加速的。而基准设备是全部用软件实现,所有数据都用CPU来处理,主要用于测试和研究领域,正确性和精确性是最主要的目的,不考虑其速度。所以在游戏里用到的设备,应都是HAL设备。