Udostępnij za pośrednictwem


BC Texture Compression Variant

Umożliwia zablokowanie kompresji na tekstury, których format pikseli, który to wersja B8G8R8X8, B8G8R8A8 lub R8G8B8A8.

Interpretacja

Formaty kompresję opartą na bloku, takich jak BC1, BC2, i BC3 zajmować znacznie mniej pamięci niż nieskompresowane formaty obrazów i dlatego też używać przepustowości znacznie mniej pamięci.W porównaniu do format nieskompresowany wykorzystujący 32-bitowy kolor, kompresji 8:1 daje BC1 (wcześniej znana pod nazwą DXT1) i BC3 (wcześniej znana pod nazwą DXT5) daje 4:1.Różnica między BC1 i BC3 jest BC1 nie obsługuje kanału alfa, a BC3 obsługuje skompresowane bloku kanału alfa.Niezależnie od wskaźniki wysoki stopień kompresji istnieje pośrednia redukcję jakość typowe tekstury.Jednak blokowania kompresji niektórych rodzajów tekstury — na przykład te, które znacząco kolorowe zmiana mały obszar — może mieć wyniki nie do przyjęcia.

Twoje tekstury są odpowiednie dla kompresję opartą na bloku, nie należy doskonała koloru należy wziąć pod uwagę przy użyciu formatu kompresji bloku do ograniczenia użycia pamięci i używać mniejszej przepustowości.

Uwagi

Umożliwia kompresję tekstury przy użyciu formatu kompresję opartą na bloku w każdym wywołaniu ID3DDevice::CreateTexture2D który tworzy struktury źródła.W szczególności tekstury są kompresowane, gdy:

  • D3D11_TEXTURE2D_DESC Przekazany obiekt pDesc opisuje niezmiennymi zasobu cieniowania. to:

    • Element członkowski BindFlags ma tylko flagi D3D11_BIND_SHADER_RESOURCE ustawiony.

    • Element członkowski użycie ma ustawioną wartość D3D11_USAGE_DEFAULT lub D3D11_USAGE_IMMUTABLE.

    • Element członkowski CPUAccessFlags jest równa 0 (Brak dostępu Procesora).

    • Element członkowski SamplerDesc ma jej liczba zestaw elementów członkowskich do 1 (nie próbkowanie większy priorytet (MSAA)).

  • Początkowe dane są dostarczane do wywołania CreateTexture2D.

Poniżej przedstawiono formaty obsługiwany przez źródło i ich formaty skompresowane bloku.

Oryginalny format (od)

Skompresowany format (do)

DXGI_FORMAT_B8G8R8X8_UNORM

BC1 (dawniej DXT1)

DXGI_FORMAT_B8G8R8X8_UNORM_SRGB

BC1

DXGI_FORMAT_B8G8R8X8_TYPELESS

BC1

DXGI_FORMAT_B8G8R8A8_UNORM

BC3 (dawniej 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

Jeśli Twój struktury ma format, który nie ma na liście, struktury nie jest modyfikowany.

Ograniczenia i

Czasami tekstur, które są tworzone za pomocą zmianę obrazów w formacie B8G8R8A8 lub R8G8B8A8 faktycznie nie używam kanału alfa, ale nie istnieje sposób dla wariant wiedzieć, czy też nie jest używany.Aby zachować są poprawne, w przypadku, gdy jest używany kanału alfa, wariant zawsze koduje tych formatów w mniej wydajne format BC3.Możesz pomóc grafiki ramki analizy lepiej zrozumieć potencjalnych wydajności renderowania swoją aplikację za pomocą tego wariant przy użyciu wariantów B8G8R8X8 format obrazu, jeśli nie używasz kanału alfa, aby wariant można użyć bardziej wydajne formatu BC1.

Przykład

Ten wariant bloku — kompresuje tekstury w czasie wykonywania, przed wywołaniem CreateTexture2D.Zaleca się w odniesieniu do tej metody dla kodu produkcyjnego, ponieważ nieskompresowanego tekstury zużywać więcej miejsca na dysku i dodatkowych czynności może znacznie zwiększyć czas ładowania w aplikacji, ponieważ kompresję opartą na bloku wymaga znaczących zasobów obliczeniowych do zakodowania.Zalecany jest umożliwia kompresję swoje tekstury w trybie offline za pomocą edytora lub procesora obraz, który jest częścią potoku sieci kompilacji.Te metody zmniejszyć wymagania dotyczące miejsca na dysku, wyeliminowania wykonywania zapasu w aplikacji i dają dłuższego czasu przetwarzania, tak aby można zachować najlepszej jakości obrazu.

Zobacz też

Informacje

Half/Quarter Texture Dimensions Variant