Udostępnij przez


Formaty skompresowanych tekstur (Direct3D 9)

Ta sekcja zawiera informacje o wewnętrznej organizacji skompresowanych formatów tekstur. Te szczegóły nie są potrzebne do używania skompresowanych tekstur, ponieważ można użyć funkcji D3DX do konwersji na i z skompresowanych formatów. Te informacje są jednak przydatne, jeśli chcesz wykonywać operacje bezpośrednio na skompresowanych danych powierzchni.

Direct3D używa formatu kompresji, który dzieli mapy tekstur na 4x4 bloki texel. Jeśli tekstura nie zawiera przezroczystości - jest nieprzezroczysta - lub jeśli przezroczystość jest określona przez 1-bitową alfa, blok 8-bajtowy reprezentuje blok mapy tekstury. Jeśli mapa tekstury zawiera przezroczyste texels, używając kanału alfa, blok 16-bajtowy reprezentuje go.

Każda pojedyncza tekstura musi określić, że jego dane są przechowywane jako 64 lub 128 bitów na grupę 16 texels. Jeśli bloki 64-bitowe - czyli format DXT1 - są używane do tekstury, można mieszać nieprzezroczyste i 1-bitowe formaty alfa na podstawie na blok w ramach tej samej tekstury. Innymi słowy, porównanie wielkości niepodpisanej liczby całkowitej color_0 i color_1 jest wykonywane unikatowo dla każdego bloku 16 texels.

Gdy są używane bloki 128-bitowe, kanał alfa musi być określony w jawnym (formacie DXT2 lub DXT3) albo w trybie interpolowanym (format DXT4 lub DXT5) dla całej tekstury. Podobnie jak w przypadku wybrania trybu interpolacji, w przypadku wybrania trybu interpolacji osiem interpolowanych alfa lub sześciu interpolowanych alfa może być używanych na podstawie bloków. Ponownie porównanie wielkości alpha_0 i alpha_1 odbywa się unikatowo na podstawie bloków.

Pitch for DXTn formaty różni się od tego, co zostało zwrócone w directX 7.0. Skok jest teraz mierzony w bajtach (nie blokach). Jeśli na przykład masz szerokość 16, wówczas będziesz mieć rzut czterech bloków (4*8 dla DXT1, 4*16 dla DXT2-5).

skompresowanych zasobów tekstur