Sdílet prostřednictvím


16bpp Render Target Format Variant

Nastaví formát pixelu DXGI_FORMAT_B5G6R5_UNORM pro všechny cíle vykreslení a zpět vyrovnávací paměti.

Výklad

Cíl vykreslení nebo zpět vyrovnávací paměť obvykle používá formát 32bpp (32 bitů na pixel) například B8G8R8A8_UNORM.formáty 32bpp můžou velké množství paměti šířky pásma.Vzhledem k tomu, že formát B5G6R5_UNORM je 16bpp formátu, který je polovina velikosti 32bpp formáty, můžete jeho používání zbavovat zatížení na paměť šířku pásma, ale i když za cenu věrnost nižšími barvy.

Pokud tato varianta ukazuje výkon velký nárůst, pravděpodobně to znamená, že svou aplikaci spotřebovává šířky pásma příliš mnoho paměti.Zlepšení výkonu lze obzvláště vyslovováno při PROFILOVANÉHO rámec trpí významné množství overdraw nebo obsahuje velké množství prolnutí alfa.

Pokud druhy scény, které jsou generovány pomocí aplikace nevyžaduje reprodukci vysokou věrností barev, nevyžaduje cíl vykreslení mít alfa kanálu a často neobsahují hladký průběh přechody – jsou k řazení do pásem artefakty pod věrnost nižšími barvy – zvažte použití formátu cíl vykreslení 16bpp ke snížení využití paměti šířky pásma.

Pokud na pozadí, které jsou generovány ve vaší aplikaci vyžadují reprodukci vysokou věrností barev nebo alfa kanálu nebo jsou běžných hladký průběh přechody, zvažte dalších strategií ke snížení využití šířky pásma paměť – například, čímž snižuje velikost overdraw nebo alfa – prolnutí, snížení rozměry framebuffer nebo úprava struktury prostředky využívat menší šířku pásma paměti povolení komprese nebo snížením své dimenze.Obvyklým způsobem je nutné vzít v úvahu obrázek kvalitu kompromis pocházející s některou z těchto optimalizací.

Pokud vaše aplikace by měly těžit z přepnutí do vyrovnávací paměti 16bpp zpět, ale je součástí vašeho řetězce odkládacího souboru, je třeba provést další kroky, protože DXGI_FORMAT_B5G6R5_UNORM není podporovaná zpět vyrovnávací paměť formát pro vytvořené pomocí řetězce odkládacího souboru D3D11CreateDeviceAndSwapChain nebo IDXGIFactory::CreateSwapChain.Místo toho je nutné vytvořit cíl vykreslení formátu B5G6R5_UNORM pomocí CreateTexture2D a vykreslování, místo toho.Potom před zavoláním funkce k dispozici pro váš řetězec odkládacího souboru, zkopírujte cíl vykreslení na přípravné vyrovnávací paměti odkládacího souboru řetězci podle kreslení celé obrazovky čtverčíku s cíl vykreslení jako svůj zdroj struktury.Ačkoli je tento způsob další krok, který bude využívat šířku pásma některé paměti, většina operací vykreslování bude využívat menší šířku pásma, protože mají vliv na cíl vykreslení 16bpp; Pokud to uloží větší šířku pásma, než je využívána kopírování cíl vykreslení do odkládacího souboru řetězci přípravné vyrovnávací paměti, je lepší výkon vykreslování.

GPU architektury, které používají vedle sebe vykreslování techniky můžete zobrazit výhody významné výkonu pomocí formátu framebuffer 16bpp, protože větší část framebuffer vejde v mezipaměti místní framebuffer každou dlaždici.Vedle sebe vykreslování architektur se někdy nenachází v pracují grafikou v mobilních telefonů a počítačů typu tablet; Zobrazí se zřídka mimo tento volné místo.

Poznámky

Cílový formát vykreslení je nastaven na DXGI_FORMAT_B5G6R5_UNORM při každém volání na ID3D11Device::CreateTexture2D , který vytvořil cíl vykreslení.Konkrétně není ve formátu přepsána při D3D11_TEXTURE2D_DESC objekt předaný pDesc popisuje cíl vykreslení; To je:

  • Člen BindFlags má nastaven příznak D3D11_BIND_REDNER_TARGET.

  • Člen BindFlags má příznak D3D11_BIND_DEPTH_STENCIL vymazat.

  • Člen využití je nastavena na D3D11_USAGE_DEFAULT.

Omezení a

Vzhledem k tomu, že ve formátu B5G6R5 nemá alfa kanálu, není tato varianta zachován alfa obsah.Pokud vaše aplikace vykreslování vyžaduje alfa kanál v cílovém vykreslení, nelze právě přepnout do formátu B5G6R5.

Příklad

16bpp vykreslení cílový formát variant lze reprodukovat pro vykreslení cíle vytvořené pomocí CreateTexture2D pomocí kódu nějak takto:

D3D11_TEXTURE2D_DESC target_description;

target_description.BindFlags = D3D11_BIND_RENDER_TARGET;
target_description.Format = DXGI_FORMAT_B5G6R5_UNORM;
d3d_device->CreateTexture2D(&target_description, nullptr, &render_target);