Compartilhar via


Recursos de textura compactados (Direct3D 9)

Os mapas de textura são imagens digitalizadas desenhadas em formas tridimensionais para adicionar detalhes visuais. Elas são mapeadas para essas formas durante a rasterização, e o processo pode consumir grandes quantidades de memória e barramento de sistema. Para reduzir a quantidade de memória consumida pelas texturas, o Direct3D dá suporte à compactação de superfícies de textura. Alguns dispositivos Direct3D têm suporte nativo às superfícies de textura compactadas. Em tais dispositivos, quando você cria uma superfície compactada e carrega os dados nela, a superfície pode ser usada no Direct3D como qualquer outra superfície de textura. O Direct3D manipula a descompactação quando a textura é mapeada para um objeto 3D.

Eficiência de armazenamento e compactação de textura

Todos os formatos de compactação de textura são potências de dois. Embora isso não signifique que uma textura é necessariamente quadrada, significa que x e y são potências de dois. Por exemplo, se uma textura for originalmente de 512 por 128 bytes, o próximo mapeamento de MIP seria de 256 por 64 e assim por diante, com cada nível diminuindo por uma potência de dois. Em níveis inferiores, onde a textura é filtrada como 16 por 2 e 8 por 1, haverá desperdício de bits porque o bloco de compactação é sempre um bloco de 4 por 4 texels. As partes não utilizadas do bloco são preenchidas. Embora existam bits desperdiçados nos níveis inferiores, o ganho geral é ainda significativo. Teoricamente, o pior caso é uma textura de 2K por 1 (potência de 2⁰). Aqui, apenas uma única linha de pixels é codificada por bloco, enquanto o restante do bloco é não utilizado.

Combinando formatos dentro de uma única textura

É importante observar que qualquer textura deve especificar que os dados sejam armazenados como 64 ou 128 bits por grupo de 16 texels. Se blocos de 64 bits - ou seja, formatar DXT1 - forem usados para a textura, será possível misturar os formatos alfa opacos e de 1 bit em uma base por bloco dentro da mesma textura. Em outras palavras, a comparação da magnitude inteiro sem sinal de color_0 e color_1 é executada exclusivamente para cada bloco de 16 texels.

Depois que os blocos de 128 bits forem usados, o canal alfa deverá ser especificado no modo explícito (formato DXT2 e DXT3) ou interpolado (formato DXT4 e DXT5) para toda a textura. Assim como acontece com a cor, quando o modo interpolado (formato DXT4 e DXT5) é selecionado, oito alfas interpolados ou seis modos alfa interpolados podem ser usados em uma base bloco a bloco. Novamente, a comparação de magnitude de alpha_0 e alpha_1 é feita exclusivamente em uma base bloco a bloco.

O Direct3D fornece serviços para compactar superfícies que são usadas para a texturização de modelos 3D. Esta seção fornece informações sobre como criar e tratar os dados em uma superfície de textura compactada.

As informações estão contidas nos tópicos a seguir.

Texturas Direct3D