其實到寫這篇文章的時候,DXGI已經出1.5版了,但很多朋友實際上還在用1.2甚至1.1,所以現在談1.4一點也不過時,而且1.4又是一次非常重大的更新,很值得仔細談談。

    為了支持Direct3D 12(DXGI還處于1.4版本的時候,Direct3D還按照老命名方式叫Direct3D 12,現在已統一更名為DirectX 12),DXGI加入了一下這些新功能:

  • 更廉價的適配器枚舉機制
  • 視頻內存預算追蹤
  • Direct3D 12Swapchain 改進
  • 相關話題

更廉價的適配器枚舉機制

    在Direct3D 12里已經不能從device反向追蹤創(chuàng)建它的IDXGIAdapter適配器對象了。在調用D3D12CreateDevice的時候也不能指定D3D_DRIVER_TYPE_WARP了。但你可以用IDXFactory4去處理這些事。IDXGIFactory4::EnumAdapterByLuid可以在D3D 12環(huán)境下追蹤創(chuàng)建device的adapter(與ID3D12Device::GetAdapterLuid結對使用)。如果想讓D3D12CreateDevice使用WARP渲染器,要用到IDXGIFactory4::EnumWarpAdapter提供的適配器(Adapter)。

視頻內存預算追蹤

    微軟建議開發(fā)者在處理視頻內存時使用他們設計的預約內存系統,這樣能告知操作系統為開發(fā)者預留應用所需要的最低內存。(這是一種很好的機制,但也有些限制)

    一個系統能為某個應用提供的物理內存數量叫做這個應用的“視頻內存預算(video memory budget)”。當后臺進程喚醒或睡眠的時候預算會出現極大的波動;當終端用戶切換進程的時候預算會急劇變化。應用此時會被系統通知并進行統計當前消費內存和預算內存。應用如果覺得預算不夠,就會休眠并允許其他應用執(zhí)行,當時調用的創(chuàng)建類函數也有可能返回錯誤。IDXGIAdapter3就與此事有關,尤其是QueryVideoMemoryInfo和RegisterVideoMemoryBudgetChangeNotificationEvent。

    更多相關信息查看這里:Residency

Direct3D 12Swapchain 改進

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式