Share via


Recursos de textura comprimidos (Direct3D 9)

Los mapas de textura son imágenes digitales dibujadas en formas tridimensionales para agregar detalles visuales. Se asignan a estas formas durante la rasterización y el proceso puede consumir grandes cantidades de memoria y bus del sistema. Para reducir la cantidad de memoria consumida por texturas, Direct3D admite la compresión de superficies de textura. Algunos dispositivos Direct3D admiten superficies de textura comprimidas de forma nativa. En estos dispositivos, cuando haya creado una superficie comprimida y cargado los datos en él, la superficie se puede usar en Direct3D como cualquier otra superficie de textura. Direct3D controla la descompresión cuando la textura se asigna a un objeto 3D.

Eficiencia del almacenamiento y compresión de texturas

Todos los formatos de compresión de textura son potencias de dos. Aunque esto no significa que una textura sea necesariamente cuadrada, significa que tanto x como y son potencias de dos. Por ejemplo, si una textura es originalmente de 512 en 128 bytes, la siguiente mipmapping sería de 256 a 64, y así sucesivamente, con cada nivel disminuyendo por una potencia de dos. En niveles inferiores, donde la textura se filtra a 16 por 2 y 8 por 1, habrá bits desperdiciados porque el bloque de compresión siempre es un bloque de 4 por 4 de texturas. Las partes sin usar del bloque se rellenan. Aunque hay bits desperdiciados en los niveles más bajos, la ganancia general sigue siendo significativa. El peor de los casos es, en teoría, una textura de 2K por 1 (2%) Aquí, solo se codifica una sola fila de píxeles por bloque, mientras que el resto del bloque no se usa.

Combinar formatos dentro de una sola textura

Es importante tener en cuenta que cualquier textura única debe especificar que sus datos se almacenen como 64 o 128 bits por grupo de 16 elementos de textura. Si los bloques de 64 bits (es decir, formato DXT1) se usan para la textura, es posible mezclar los formatos alfa opacos y de 1 bits por bloque dentro de la misma textura. En otras palabras, la comparación de la magnitud entera sin signo de color_0 y color_1 se realiza de forma única para cada bloque de 16 elementos de textura.

Una vez que se usan los bloques de 128 bits, el canal alfa debe especificarse en modo explícito (formato DXT2 y DXT3) o en modo interpolado (formato DXT4 y DXT5) para toda la textura. Al igual que con el color, cuando se selecciona el modo interpolado (formato DXT4 y DXT5), se pueden usar ocho alfas interpolados o seis alfas interpolados en bloque. De nuevo, la comparación de magnitud de alpha_0 y alpha_1 se realiza de forma única en bloque.

Direct3D proporciona servicios para comprimir superficies que se usan para los modelos 3D de texturización. En esta sección se proporciona información sobre cómo crear y manipular los datos en una superficie de textura comprimida.

La información se incluye en los temas siguientes.

Texturas de Direct3D