Partilhar via


Recursos de textura compactados (Direct3D 9)

Os mapas de textura são imagens digitalizadas desenhadas em formas tridimensionais para adicionar detalhes visuais. Eles são mapeados nessas formas durante a rasterização, e o processo pode consumir grandes quantidades do barramento do sistema e da memória. Para reduzir a quantidade de memória consumida por texturas, o Direct3D suporta a compressão de superfícies de textura. Alguns dispositivos Direct3D suportam superfícies de textura comprimidas nativamente. Nesses dispositivos, quando você criou uma superfície compactada e carregou os dados nela, a superfície pode ser usada no Direct3D como qualquer outra superfície de textura. O Direct3D lida com a descompressão quando a textura é mapeada para um objeto 3D.

Eficiência de armazenamento e compressão de textura

Todos os formatos de compressã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 é originalmente 512 por 128 bytes, o próximo mipmapping seria 256 por 64 e assim por diante, com cada nível diminuindo por uma potência de dois. Em níveis mais baixos, onde a textura é filtrada para 16 por 2 e 8 por 1, haverá bits desperdiçados porque o bloco de compressão é sempre um bloco 4 por 4 de texels. As partes não utilizadas do bloco são acolchoadas. Embora haja bits desperdiçados nos níveis mais baixos, o ganho geral ainda é significativo. O pior caso é, em teoria, uma textura 2K por 1 (potência de 2⁰). Aqui, apenas uma única linha de pixels é codificada por bloco, enquanto o restante do bloco não é usado.

Misturando formatos dentro de uma única textura

É importante notar que qualquer textura única deve especificar que seus dados são armazenados como 64 ou 128 bits por grupo de 16 texels. Se blocos de 64 bits - ou seja, formato DXT1 - forem usados para a textura, é possível misturar os formatos opaco e alfa de 1 bit por bloco dentro da mesma textura. Em outras palavras, a comparação da magnitude inteira não assinada de color_0 e color_1 é realizada exclusivamente para cada bloco de 16 texels.

Uma vez que os blocos de 128 bits são usados, o canal alfa deve ser especificado no modo explícito (formato DXT2 e DXT3) ou interpolado (formato DXT4 e DXT5) para toda a textura. Tal como acontece com a cor, quando o modo interpolado (formato DXT4 e DXT5) é selecionado, então oito alfas interpolados ou seis modos alfas interpolados podem ser usados bloco a bloco. Mais uma vez, a comparação da magnitude de alpha_0 e alpha_1 é feita exclusivamente bloco a bloco.

O Direct3D fornece serviços para comprimir superfícies que são utilizadas para texturizar modelos 3D. Esta seção fornece informações sobre como criar e manipular os dados em uma superfície de textura compactada.

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

de texturas Direct3D