Freigeben über


Komprimierte Texturformate (Direct3D 9)

Dieser Abschnitt enthält Informationen zum internen organization komprimierter Texturformate. Sie benötigen diese Details nicht, um komprimierte Texturen zu verwenden, da Sie D3DX-Funktionen für die Konvertierung in und aus komprimierten Formaten verwenden können. Diese Informationen sind jedoch nützlich, wenn Sie mit komprimierten Oberflächendaten direkt arbeiten 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 eine 1-Bit-Alpha angegeben wird, stellt ein 8-Byte-Block den Texturzuordnungsblock dar. Wenn die Texturzuordnung transparente Texel mit einem Alphakanal enthält, stellt sie ein 16-Byte-Block dar.

Jede einzelne Textur muss angeben, dass ihre Daten als 64 oder 128 Bit pro Gruppe mit 16 Texels gespeichert werden. Wenn 64-Bit-Blöcke – d. h. format DXT1 – für die Textur verwendet werden, ist es möglich, die undurchsichtigen und 1-Bit-Alphaformate pro Block in derselben Textur zu mischen. Mit anderen Worten, der Vergleich der ganzzahligen Größe ohne Vorzeichen von color_0 und color_1 wird für jeden Block mit 16 Texels eindeutig durchgeführt.

Wenn 128-Bit-Blöcke verwendet werden, muss der Alphakanal entweder explizit (Format DXT2 oder DXT3) oder interpolierter Modus (Format DXT4 oder DXT5) für die gesamte Textur angegeben werden. Wie bei der Farbe können beim Auswählen 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 blockweise.

Die Tonhöhe für DXTn-Formate unterscheidet sich von dem, was in DirectX 7.0 zurückgegeben wurde. Die Pitch wird jetzt 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 DXT1, 4*16 für DXT2-5).

Komprimierte Texturressourcen