Dela via


Komprimerade strukturresurser (Direct3D 9)

Texturkartor är digitaliserade bilder som ritas på tredimensionella former för att lägga till visuell information. De mappas till dessa former under rastreringen och processen kan förbruka stora mängder av både systembussen och minnet. För att minska mängden minne som förbrukas av texturer stöder Direct3D komprimering av texturytor. Vissa Direct3D-enheter stöder komprimerade texturytor internt. På sådana enheter, när du har skapat en komprimerad yta och läst in data i den, kan ytan användas i Direct3D som vilken annan strukturyta som helst. Direct3D hanterar dekomprimering när strukturen mappas till ett 3D-objekt.

Komprimering av lagringseffektivitet och struktur

Alla texturkomprimeringsformat är två. Även om detta inte innebär att en textur nödvändigtvis är kvadratisk, betyder det att både x och y är två krafter. Om en struktur till exempel ursprungligen är 512 x 128 byte skulle nästa mipmapping vara 256 x 64 och så vidare, där varje nivå minskar med en effekt på två. På lägre nivåer, där strukturen filtreras till 16 av 2 och 8 av 1, kommer det att bli bortkastade bitar eftersom komprimeringsblocket alltid är ett 4 x 4 block med virvel. Oanvända delar av blocket är vadderade. Även om det finns bortkastade bitar på de lägsta nivåerna är den totala vinsten fortfarande betydande. Det värsta fallet är i teorin en 2K av 1 textur (2⁰ makt). Här kodas endast en enskild rad med pixlar per block, medan resten av blocket inte används.

Blanda format inom en enda struktur

Observera att varje enskild struktur måste ange att dess data lagras som 64 eller 128 bitar per grupp på 16 texels. Om 64-bitarsblock – d.v.s. format DXT1 – används för strukturen är det möjligt att blanda ogenomskinliga och 1-bitars alfaformat per block i samma textur. Med andra ord utförs jämförelsen av den osignerade heltalsstorleken för color_0 och color_1 unikt för varje block med 16 texels.

När 128-bitarsblocken används måste alfakanalen anges antingen explicit (formatet DXT2 och DXT3) eller interpolerat läge (formatet DXT4 och DXT5) för hela strukturen. Precis som med färg, när interpolerat läge (formatet DXT4 och DXT5) väljs, kan antingen åtta interpolerade alfa eller sex interpolerade alfalägen användas block för block. Återigen görs storleksjämförelsen av alpha_0 och alpha_1 unikt på block-för-block-basis.

Direct3D tillhandahåller tjänster för att komprimera ytor som används för textning av 3D-modeller. Det här avsnittet innehåller information om hur du skapar och manipulerar data i en komprimerad strukturyta.

Informationen finns i följande avsnitt.

Direct3D-texturer