Direct3D 11 Devices之 Software Layers(軟件層)

本文只是對官方文檔做出簡單的翻譯 原文地址:Software Layers

Direct3D 11運行時是分層構造的,從核心的基本功能開始,在外部層中構建可選的功能和開發人員輔助功能。

通常,圖層(layers)會添加功能(functionality),但不會修改現有行爲。 例如,核心功能(core functions)將具有相同的返回值,而與要實例化的調試層無關,儘管如果實例化調試層,則可能會提供其他調試輸出。

要在創建設備時創建圖層(layers),請調用D3D11CreateDeviceD3D11CreateDeviceAndSwapChain並提供一個或多個D3D11_CREATE_DEVICE_FLAG值。

核心層(Core Layer)

核心層默認存在。在API和設備驅動程序之間提供映射,從而最大程度地減少了高頻調用的開銷。由於核心層對於性能至關重要,因此它僅執行關鍵驗證。其餘層是可選的。

調試層(Debug Layer)

調試層提供了廣泛的附加參數和一致性驗證(例如,驗證着色器鏈接和資源綁定,驗證參數一致性以及報告錯誤描述)。

若要創建支持調試層的設備,必須安裝DirectX SDK(以獲取D3D11SDKLayers.dll),然後在調用D3D11CreateDevice函數或D3D11CreateDeviceAndSwapChain函數時指定D3D11_CREATE_DEVICE_DEBUG標誌。如果在啓用調試層的情況下運行應用程序,則該應用程序的運行速度將大大降低。但是,要確保在發佈應用程序之前清除其錯誤和警告,請使用調試層。有關更多信息,請參閱Using the debug layer to debug apps

或者,您可以使用DirectX SDK附帶的DirectX控制面板啓用/禁用調試標誌

當調試層列出內存泄漏時,它將輸出對象接口指針及其友好名稱的列表。 默認的友好名稱是“ ”。 您可以使用ID3D11DeviceChild :: SetPrivateData方法和D3Dcommon.h中的WKPDID_D3DDebugObjectName GUID來設置友好名稱。

例如,要使用SDKLayer名稱爲mytexture.jpg來命名pTexture,請使用以下代碼:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章