Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Mapy tekstur są cyframi obrazów rysowanych na kształtach trójwymiarowych w celu dodania szczegółów wizualizacji. Są one mapowane na te kształty podczas rasteryzacji, a proces może zużywać duże ilości zarówno magistrali systemowej, jak i pamięci. Aby zmniejszyć ilość pamięci zużywanej przez tekstury, funkcja Direct3D obsługuje kompresję powierzchni tekstury. Niektóre urządzenia Direct3D obsługują natywnie skompresowane powierzchnie tekstur. Na takich urządzeniach, gdy utworzono skompresowaną powierzchnię i załadowano do niej dane, powierzchnię można używać w trybie Direct3D, podobnie jak w przypadku każdej innej powierzchni tekstury. Funkcja Direct3D obsługuje dekompresję, gdy tekstura jest mapowana na obiekt 3D.
Wydajność magazynowania i kompresja tekstur
Wszystkie formaty kompresji tekstury są mocami dwóch. Chociaż nie oznacza to, że tekstura jest koniecznie kwadratowa, oznacza to, że zarówno x, jak i y są mocami dwóch. Jeśli na przykład tekstura jest pierwotnie 512 o 128 bajtów, następny mipmapping będzie 256 przez 64 i tak dalej, z każdym poziomem malejącym o moc dwóch. Na niższych poziomach, gdzie tekstura jest filtrowana do 16 przez 2 i 8 o 1, nie będzie zmarnowanych bitów, ponieważ blok kompresji jest zawsze 4 o 4 blok texels. Nieużywane części bloku są dopełnione. Chociaż na najniższym poziomie brakuje bitów, ogólny wzrost jest nadal znaczący. Najgorszy przypadek jest, teoretycznie, 2K na 1 teksturę (2 ze zasilaniem). W tym miejscu tylko jeden wiersz pikseli jest zakodowany na blok, podczas gdy reszta bloku jest nieużywany.
Mieszanie formatów w jednej teksturze
Należy pamiętać, że 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.
Po użyciu bloków 128-bitowych kanał alfa musi być określony w jawnym (formacie DXT2 i DXT3) lub w trybie interpolowanym (format DXT4 i DXT5) dla całej tekstury. Podobnie jak w przypadku wybrania trybu interpolowanego (formatu DXT4 i DXT5), można użyć ośmiu interpolowanych alfa lub sześciu trybów alfa interpolowanych według bloku. Ponownie porównanie wielkości alpha_0 i alpha_1 odbywa się unikatowo na podstawie bloków.
Direct3D udostępnia usługi kompresowania powierzchni używanych do tworzenia tekstu modeli 3D. Ta sekcja zawiera informacje na temat tworzenia i manipulowania danymi na skompresowanej powierzchni tekstury.
Informacje znajdują się w następujących tematach.
- nieprzezroczyste i 1-bitowe tekstury alfa (Direct3D 9)
- tekstury z kanałami alfa (Direct3D 9)
- skompresowanych formatów tekstur (Direct3D 9)
- przy użyciu skompresowanych tekstur (Direct3D 9)
Tematy pokrewne