Freigeben über


Komprimierte Texturformate

Dieser Abschnitt enthält Informationen zu den internen organization komprimierter Texturformate. Sie benötigen diese Details nicht, um komprimierte Texturen zu verwenden, da Sie Direct3D-Funktionen für die Konvertierung in und aus komprimierten Formaten verwenden können. Diese Informationen sind jedoch nützlich, wenn Sie komprimierte Oberflächendaten direkt verwenden möchten.

Direct3D verwendet ein Komprimierungsformat, das Texturzuordnungen in 4x4-Texelblöcke unterteilt. Wenn die Textur keine Transparenz enthält - ist undurchsichtig - oder wenn die Transparenz durch ein 1-Bit-Alpha angegeben wird, stellt ein 8-Byte-Block den Texturzuordnungsblock dar. Wenn die Texturzuordnung transparente Texel enthält, stellt sie mithilfe eines Alphakanals ein 16-Byte-Block dar.

Jede einzelne Textur muss angeben, dass ihre Daten als 64 oder 128 Bit pro Gruppe von 16 Texeln gespeichert werden. Wenn 64-Bit-Blöcke – d. h. das Format BC1 – für die Textur verwendet werden, ist es möglich, die undurchsichtigen und 1-Bit-Alphaformate auf Blockbasis innerhalb derselben Textur zu mischen. Anders ausgedrückt: Der Vergleich der ganzzahligen Größe ohne Vorzeichen von color_0 und color_1 wird für jeden Block von 16 Texeln eindeutig durchgeführt.

Wenn 128-Bit-Blöcke verwendet werden, muss der Alphakanal entweder im expliziten Modus (Format BC2) oder im interpolierten Modus (Format BC3) für die gesamte Textur angegeben werden. Wie bei der Farbe können bei Auswahl des interpolierten Modus entweder acht interpolierte Alphas oder sechs interpolierte Alphas auf Blockbasis verwendet werden. Auch hier erfolgt der Größenvergleich von alpha_0 und alpha_1 eindeutig blockweise.

Der Pitch für BCn-Formate wird in Bytes (nicht in Blöcken) gemessen. Wenn Sie beispielsweise eine Breite von 16 haben, haben Sie eine Tonhöhe von vier Blöcken (4*8 für BC1, 4*16 für BC2 oder BC3).

Komprimierte Texturressourcen