繁体   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