簡體   English   中英

為什么 Direct3D 11 中的頂點輸入參數使用 DXGI 格式

[英]Why vertex input parameters in Direct3D 11 use DXGI format

前段時間我在學習 Direct3D 11,我從 DX9 切換到 DX11,因為它有更多的功能。 但是,我無法解釋為什么輸入頂點布局格式使用這樣的 DXGI 格式

polygonLayout.Format = DXGI_FORMAT_R32G32B32_FLOAT; //For position i don't need color

在 Direct3D9 中,使用 D3DVERTEXELEMENT9 更簡單:

D3DVERTEXELEMENT9 dwDecl3[] = 
{
    {0, 0,  D3DDECLTYPE_FLOAT3,   D3DDECLMETHOD_DEFAULT, 
                                      D3DDECLUSAGE_POSITION, 0},
    {0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, 
                                      D3DDECLUSAGE_COLOR, 0},
    {0, 16, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, 
                                      D3DDECLUSAGE_COLOR, 1},
    {1,  0, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, 
                                      D3DDECLUSAGE_TEXCOORD, 0},
    {2,  0, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, 
                                      D3DDECLUSAGE_TEXCOORD, 1},
    D3DDECL_END()
};

這不是一個真正的技術或編程問題,更多的是“他們為什么這樣做?” 歷史問題。

所以...

最初的想法是,當 Microsoft 將 Direct3D 7 更改為 Direct3D 8 再更改為 Direct3D 9 時,設備/適配器枚舉代碼總是在更改,即使它們都做同樣的事情。 因此,提出了提取進行設備/適配器枚舉的 Direct3D API 的位的想法,因此創建了DirectX 圖形基礎結構(DXGI) 來滿足這一需求。 因此,為什么像像素格式這樣的枚舉在DXGI_FORMAT_*枚舉而不是“Direct3D 枚舉”中。

當時的計划是 DXGI 不需要改變,你可以只寫一次這些東西,它適用於 Direct3D 10 和未來版本的 DirectX。

唉, “沒有計划與敵人接觸” ,DXGI 幾乎隨着 Direct3D 和 Windows 操作系統的每次變化而不斷變化。

DXGI 1.0      Windows Vista and Direct3D 10

DXGI 1.1      Windows 7 and Direct3D 11
              The "you really need to use DXGICreateFactory1" release
              Included BGR formats for D3D_FEATURE_LEVEL_9_x devices
              Included BC6/BC7 formats for D3D_FEATURE_LEVEL_11_0 devices

DXGI 1.2      Windows 8 and DirectX 11.1
              Windows Store apps and the "CoreWindow" swapchain
              Introduced the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL flip model
              Included a bunch of new formats for DirectX 11 Video APIs
              Added 16bpp (5:5:5:1, 5:6:5, and 4:4:4:4) formats

DXGI 1.3      Windows 8.1 and DirectX 11.2
              Added DXGICreateFactory2 so you could enable DXGI Debugging

DXGI 1.4      Windows 10 and DirectX 11.3 / 12.0
              Introduced the DXGI_SWAP_EFFECT_FLIP_DISCARD flip model
              DirectX 12 requires  DXGI_SWAP_EFFECT_FLIP_* flip models
              Includes a few more video formats for JPEG hardware decoding support

DXGI 1.5      Windows 10 (15086) added DuplicateOutput1
              Support for Variable refresh rate displays
              (a.k.a. DXGI_PRESENT_ALLOW_TEARING)

DXGI 1.6      Windows 10 (15063) added support for HDR displays

              Windows 10 (16299) added support for some special adapter fences

              Windows 10 (17134) added the DXGI_GPU_PREFERENCE enumeration;
              Also added HDR10+ metadata support

              Windows 10 (17763) added a way to register for an event
              for adapter changes

請參閱DirectX 圖形基礎結構 (DXGI):最佳實踐DXGI 調試設備為了獲得最佳性能,請使用 DXGI 翻轉 model

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM