D3D10 的运行时是分层次的。首先是处于核心的基本功能层,然后再是处于外围的可选功能层次,如辅助开发层等。
核心层
核心层是默认存在的,它提供了API函数和驱动程序之间的直接映射,尽量减少高频度调用时的开销。核心层最注重的是性能,所以它只做最关键的验证。
除核心层外的所有层都是可选的。基本规则是,每个层次添加新的功能,但不改变已有的功能。当调用D3D10CreateDevice创建设备时,核心层总会被创建。可选层通过设置D3D10_CREATE_DEVICE_FLAG 标记来选择。
调试层
调试层提供大量的参数和一致性验证。可以通过 ID3D10InfoQueue 接口来获取调试层返回的字符串队列。
为使用调试层,必须安装DirectX SDK(来获得D3D10SDKLayers.DLL),并在D3D10CreateDevice时提供D3D10_CREATE_DEVICE_DEBUG 标记。使用调试层会使程序帧率变慢。
切换到参考(Switch-to-Reference)层
为程序提供在硬件抽象设备(HAL)和参考软件设备(REF)之间切换的功能。在D3D10CreateDevice时选择D3D10_DRIVER_TYPE_REFERENCE设备类型来创建参考设备。或者提供D3D10_CREATE_DEVICE_SWITCH_TO_REF 标记来同时创建硬件抽象设备参考设备。使用
ID3D10SwitchToRef::SetUseRef.函数来进行HAL和REF之间的切换。
线程安全层
线程安全层使得程序的多个线程可以安全地使用一个设备。线程安全层默认开启,所以D3D10默认就是线程安全的,而D3D9不是。