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