Direct3D 11 中的軟體層

來源:互聯網
上載者:User

Direct3D 11 運行時由層(Layer)構成。

一條基本的準則是在層中添加功能,但不影響已存在的行為。舉例來說,核心函數在獨立的調試層中有相同的傳回值,甚至還會有附加的調試資訊。

可調用D3D11CreateDevice 或者 D3D11CreateDeviceAndSwapChain 並提供一個或多個D3D11_CREATE_DEVICE_FLAG值在建立device的同時建立層。

Direct3D 11 提供以下運行時層:

#核心層(Core Layer)

#調試層(Debug Layer)

Core Layer

核心層預設存在,在api和device之間提供一層很薄的映射,最小化高頻率調用函數帶來的效能影響。核心層的根本是效率,它只做必要的檢查。剩下的層是可選的。

Debug Layer

該層提供大量額外的參數和一致性驗證(諸如驗證著色器串連和資源綁定,參數一致性,提交錯誤描述等)。

為了建立一個支援調試層的device,使用者必須安裝DirectX SDK(來擷取D3D11SDKLayers.dll),然後在調用D3D11CreateDevice或者D3D11CreateDeviceAndSwapChain時指定D3D11_CREATE_DEVICE_DEBUG 標記

需要注意的是啟用調式層後程式運行會大幅變慢。你可以使用SDK中的DirectX Control Panel來啟用或者禁用調試層。當調式層列出記憶體流失時,輸出的是一個關聯著友好命名的介面指標列表。預設的友好命名是“<unnamed>”。你可以使用ID3D11DeviceChild::SetPrivateData和D3Dcommon.h中的WKPDID_D3DDebugObjectName GUID來設定友好命名。比如用mytexture.jpg命名一個pTexture指標,使用如下代碼:

const char c_szName[] = "mytexture.jpg";pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.