BC Texture Compression Variant
Povoluje blok komprese na textury, které mají pixel formátu, který je variantou B8G8R8X8, B8G8R8A8 nebo R8G8B8A8.
Výklad
Formáty komprese založené na blocích, jako jsou BC1, BC2, a BC3 zabírají výrazně méně paměti než nekomprimováno formáty obrázků a proto využívat šířku pásma výrazně méně paměti.Ve srovnání se nekomprimovaný formát, který používá 32 bitů na pixel, BC1 (dříve označovaná jako DXT1) je možné dosáhnout komprese 8:1 a BC3 (dříve označovaná jako DXT5) je možné dosáhnout 4:1.Rozdíl mezi BC1 a BC3 je, že BC1 nepodporuje alfa kanálu, zatímco BC3 podporuje komprimované bloku alfa kanálu.Bez ohledu na poměr vysoké míry komprese je pouze dílčí snížení kvalitu obrazu pro typická textury.Však blokovat komprese určité druhy textury – například ty, které mají významné barva variantou v malé plochy – může mít nepřijatelné výsledky.
Pokud vaše textury jsou vhodné pro založené na blocích komprese a není nutné perfektní barvu přesnosti, zvažte použití formátu komprimované bloku ke snížení využití paměti a využívat menší šířku pásma.
Poznámky
Komprese textury pomocí formát komprese založené na blocích při každém volání na ID3DDevice::CreateTexture2D , který vytvořil zdroj struktury.Konkrétně jsou komprimované textury při:
D3D11_TEXTURE2D_DESC Předaný objekt pDesc popisuje neměnnými shader prostředku. To je:
Člen BindFlags má pouze příznak D3D11_BIND_SHADER_RESOURCE nastaven.
Člen využití je nastavena na D3D11_USAGE_DEFAULT nebo D3D11_USAGE_IMMUTABLE.
Člen CPUAccessFlags je nastaven na hodnotu 0 (žádný přístup CPU).
Člen SamplerDesc má jeho počtu členů nastaven na hodnotu 1 (žádné více ukázky proti aliasy (MSAA)).
Počáteční data je určena k volání CreateTexture2D.
Zde jsou formáty podporovaný zdroj a jejich formáty komprimované bloku.
Původní formát (od) |
Komprimovaný formát (do) |
---|---|
DXGI_FORMAT_B8G8R8X8_UNORM |
BC1 (dříve DXT1) |
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB |
BC1 |
DXGI_FORMAT_B8G8R8X8_TYPELESS |
BC1 |
DXGI_FORMAT_B8G8R8A8_UNORM |
BC3 (dříve DXT5) |
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB |
BC3 |
DXGI_FORMAT_B8G8R8A8_TYPELESS |
BC3 |
DXGI_FORMAT_R8G8B8A8_UNORM |
BC3 |
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB |
BC3 |
DXGI_FORMAT_R8G8B8A8_TYPELESS |
BC3 |
Má-li vaše struktury formátu, který není uveden, struktury se nemění.
Omezení a
V některých případech textury, které jsou vytvořeny s variantou formáty obrázků B8G8R8A8 nebo R8G8B8A8 nepoužívám skutečně alfa kanálu, ale neexistuje žádný způsob varianty vědět, zda je použita či nikoli.V případě, že se používá alfa kanálu, údržbou správností, varianta vždy kóduje tyto formáty do méně efektivní BC3 formátu.Může pomoci analýzy rámec grafické lépe pochopit svou aplikaci potenciální vykreslování výkon při použití této varianty pomocí variantou B8G8R8X8 formát obrázku, pokud nepoužíváte alfa kanálu tak, aby varianta pomocí dalších efektivní BC1 formátu.
Příklad
Tato varianta bloku komprimuje textury za běhu, před voláním CreateTexture2D.Doporučujeme proti tento přístup pro produkčního kódu, protože nekomprimovaná textury spotřebovávat více místa na disku a na další krok může významně zvyšuje časů zavádění ve vaší aplikaci, protože na základě bloku komprese vyžaduje významné systémové prostředky ke kódování.Namísto toho doporučujeme kompresi vaše textury v režimu offline pomocí editoru obrázek nebo obrázek procesor, který je součástí kanálu sestavení.Tyto přístupy snížit požadavky na místo na disku, eliminovat běhu poklesu ve vaší aplikaci a poskytují více času na zpracování, takže můžete zachovat nejlepší kvalitu obrázku.