Formats de texture compressés (Direct3D 9)
Cette section contient des informations sur l’organisation interne des formats de texture compressés. Vous n’avez pas besoin de ces détails pour utiliser des textures compressées, car vous pouvez utiliser des fonctions D3DX pour la conversion vers et depuis des formats compressés. Toutefois, ces informations sont utiles si vous souhaitez utiliser les données de surface compressées directement.
Direct3D utilise un format de compression qui divise les cartes de texture en blocs Texel 4x4. Si la texture ne contient pas de transparence-est opaque-ou si la transparence est spécifiée par une alpha de 1 bit, un bloc de 8 octets représente le bloc de la carte de texture. Si la carte de texture contient des texels transparents, à l’aide d’un canal alpha, un bloc de 16 octets le représente.
Toute texture unique doit spécifier que ses données sont stockées sous la forme de 64 ou 128 bits par groupe de 16 texels. Si les blocs 64 bits, c’est-à-dire le format DXT1, sont utilisés pour la texture, il est possible de mélanger les formats alpha opaque et 1 bits sur la base de chaque bloc au sein de la même texture. En d’autres termes, la comparaison de l’amplitude de l’entier non signé de la couleur _ 0 et de la couleur _ 1 est effectuée de manière unique pour chaque bloc de 16 texels.
Quand des blocs 128 bits sont utilisés, le canal alpha doit être spécifié dans explicite (format DXT2 ou DXT3) ou en mode interpolé (format DXT4 ou DXT5) pour la texture entière. Comme pour la couleur, lorsque le mode interpolé est sélectionné, huit alpha interpolés ou six modes alphabétiques interpolés peuvent être utilisés bloc par bloc. Là encore, la comparaison de magnitude des alpha _ 0 et alpha _ 1 est effectuée de manière unique sur une base bloc par bloc.
Le pas pour les formats DXTn est différent de ce qui a été retourné dans DirectX 7,0. Le tangage est maintenant mesuré en octets (et non pas en blocs). Par exemple, si vous avez une largeur de 16, vous obtiendrez un pas de quatre blocs (4 * 8 pour DXT1, 4 * pour DXT2-5).