D3D10 的運行時是分層次的。首先是處于核心的基本功能層,然后再是處于外圍的可選功能層次,如輔助開發層等。
核心層
核心層是默認存在的,它提供了API函數和驅動程序之間的直接映射,盡量減少高頻度調用時的開銷。核心層最注重的是性能,所以它只做最關鍵的驗證。
除核心層外的所有層都是可選的。基本規則是,每個層次添加新的功能,但不改變已有的功能。當調用D3D10CreateDevice創建設備時,核心層總會被創建??蛇x層通過設置D3D10_CREATE_DEVICE_FLAG 標記來選擇。
調試層
調試層提供大量的參數和一致性驗證??梢酝ㄟ^ ID3D10InfoQueue 接口來獲取調試層返回的字符串隊列。
為使用調試層,必須安裝DirectX SDK(來獲得D3D10SDKLayers.DLL),并在D3D10CreateDevice時提供D3D10_CREATE_DEVICE_DEBUG 標記。使用調試層會使程序幀率變慢。
切換到參考(Switch-to-Reference)層
為程序提供在硬件抽象設備(HAL)和參考軟件設備(REF)之間切換的功能。在D3D10CreateDevice時選擇D3D10_DRIVER_TYPE_REFERENCE設備類型來創建參考設備?;蛘咛峁〥3D10_CREATE_DEVICE_SWITCH_TO_REF 標記來同時創建硬件抽象設備參考設備。使用
ID3D10SwitchToRef::SetUseRef.函數來進行HAL和REF之間的切換。
線程安全層
線程安全層使得程序的多個線程可以安全地使用一個設備。線程安全層默認開啟,所以D3D10默認就是線程安全的,而D3D9不是。