D3DFORMAT
Définit les différents types de formats de surface.
typedef enum _D3DFORMAT {
D3DFMT_UNKNOWN = 0,
D3DFMT_R8G8B8 = 20,
D3DFMT_A8R8G8B8 = 21,
D3DFMT_X8R8G8B8 = 22,
D3DFMT_R5G6B5 = 23,
D3DFMT_X1R5G5B5 = 24,
D3DFMT_A1R5G5B5 = 25,
D3DFMT_A4R4G4B4 = 26,
D3DFMT_R3G3B2 = 27,
D3DFMT_A8 = 28,
D3DFMT_A8R3G3B2 = 29,
D3DFMT_X4R4G4B4 = 30,
D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8B8G8R8 = 32,
D3DFMT_X8B8G8R8 = 33,
D3DFMT_G16R16 = 34,
D3DFMT_A2R10G10B10 = 35,
D3DFMT_A16B16G16R16 = 36,
D3DFMT_A8P8 = 40,
D3DFMT_P8 = 41,
D3DFMT_L8 = 50,
D3DFMT_A8L8 = 51,
D3DFMT_A4L4 = 52,
D3DFMT_V8U8 = 60,
D3DFMT_L6V5U5 = 61,
D3DFMT_X8L8V8U8 = 62,
D3DFMT_Q8W8V8U8 = 63,
D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67,
D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D32 = 71,
D3DFMT_D15S1 = 73,
D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77,
D3DFMT_D24X4S4 = 79,
D3DFMT_D16 = 80,
D3DFMT_D32F_LOCKABLE = 82,
D3DFMT_D24FS8 = 83,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_D32_LOCKABLE = 84,
D3DFMT_S8_LOCKABLE = 85,
#endif // !D3D_DISABLE_9EX
D3DFMT_L16 = 81,
D3DFMT_VERTEXDATA =100,
D3DFMT_INDEX16 =101,
D3DFMT_INDEX32 =102,
D3DFMT_Q16W16V16U16 =110,
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
D3DFMT_R16F = 111,
D3DFMT_G16R16F = 112,
D3DFMT_A16B16G16R16F = 113,
D3DFMT_R32F = 114,
D3DFMT_G32R32F = 115,
D3DFMT_A32B32G32R32F = 116,
D3DFMT_CxV8U8 = 117,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_A1 = 118,
D3DFMT_A2B10G10R10_XR_BIAS = 119,
D3DFMT_BINARYBUFFER = 199,
#endif // !D3D_DISABLE_9EX
D3DFMT_FORCE_DWORD =0x7fffffff
} D3DFORMAT;
Notes
Il existe plusieurs types de formats :
- BackBuffer ou Formats d’affichage
- Formats de mémoire tampon
- Formats de texture compressés DXTn
- Formats à virgule flottante
- FOURCC Formats
- IEEE Formats
- Formats mixtes
- Formats signés
- Formats non signés
- Autres
Tous les formats sont répertoriés de gauche à droite, du bit le plus significatif au bit le moins significatif. Par exemple, D3DFORMAT_ARGB est classé du canal de bits le plus significatif A (alpha) au canal de bits le moins significatif B (bleu). Lors de la traversée des données de surface, les données sont stockées en mémoire du bit le moins significatif au bit le plus significatif, ce qui signifie que l’ordre de canal dans la mémoire est du bit le moins significatif (bleu) au bit le plus significatif (alpha).
La valeur par défaut pour les formats qui contiennent des canaux non définis (G16R16, A8, etc.) est 1. La seule exception est le format A8, qui est initialisé à 000 pour les trois canaux de couleur.
L’ordre des bits est d’abord de l’octet le plus significatif, donc D3DFMT_A8L8 indique que l’octet élevé de ce format de 2 octets est alpha. D3DFMT_D16 indique une valeur entière 16 bits et une surface verrouillable d’application.
Les formats de pixels ont été choisis pour permettre l’expression de formats d’extension définis par le fournisseur de matériel, ainsi que pour inclure la méthode FOURCC bien établie. L’ensemble de formats compris par le runtime Direct3D est défini par D3DFORMAT.
Notez que les formats sont fournis par des fournisseurs de matériel indépendants et que de nombreux codes FOURCC ne sont pas répertoriés. Les formats de cette énumération sont uniques en ce qu’ils sont sanctionnés par le runtime, ce qui signifie que le rastériseur de référence fonctionnera sur tous ces types. Les formats fournis par IHV seront pris en charge par les IHV individuels sur une base carte par carte.
BackBuffer ou Formats d’affichage
Ces formats sont les seuls formats valides pour une mémoire tampon arrière ou un affichage.
Format | Mémoire tampon arrière | Affichage |
---|---|---|
A2R10G10B10 | x | x (mode plein écran uniquement) |
A8R8G8B8 | x | |
X8R8G8B8 | x | x |
A1R5G5B5 | x | |
X1R5G5B5 | x | x |
R5G6B5 | x | x |
Formats de mémoire tampon
Les mémoires tampons de profondeur, de gabarit, de vertex et d’index ont chacune des formats uniques.
Indicateurs de mémoire tampon | Valeur | Format |
---|---|---|
D3DFMT_D16_LOCKABLE | 70 | Profondeur de bits de mémoire tampon z 16 bits. |
D3DFMT_D32 | 71 | Profondeur de bits de mémoire tampon z 32 bits. |
D3DFMT_D15S1 | 73 | Profondeur de bits de mémoire tampon z 16 bits où 15 bits sont réservés pour le canal de profondeur et 1 bit est réservé au canal de gabarit. |
D3DFMT_D24S8 | 75 | Profondeur de bits de mémoire tampon z 32 bits utilisant 24 bits pour le canal de profondeur et 8 bits pour le canal de gabarit. |
D3DFMT_D24X8 | 77 | Profondeur de bits de mémoire tampon z 32 bits à l’aide de 24 bits pour le canal de profondeur. |
D3DFMT_D24X4S4 | 79 | Profondeur de bits de mémoire tampon z 32 bits utilisant 24 bits pour le canal de profondeur et 4 bits pour le canal de gabarit. |
D3DFMT_D32F_LOCKABLE | 82 | Format verrouillable où la valeur de profondeur est représentée sous la forme d’un nombre à virgule flottante IEEE standard. |
D3DFMT_D24FS8 | 83 | Format non verrouillable qui contient 24 bits de profondeur (dans un format à virgule flottante 24 bits - 20e4) et 8 bits de gabarit. |
D3DFMT_D32_LOCKABLE | 84 | Mémoire tampon de profondeur 32 bits verrouillable.
Différences entre Direct3D 9 et Direct3D 9Ex : Cet indicateur est disponible dans Direct3D 9Ex uniquement. |
D3DFMT_S8_LOCKABLE | 85 % | Mémoire tampon de gabarit 8 bits verrouillable.
Différences entre Direct3D 9 et Direct3D 9Ex : Cet indicateur est disponible dans Direct3D 9Ex uniquement. |
D3DFMT_D16 | 80 | Profondeur de bits de mémoire tampon z 16 bits. |
D3DFMT_VERTEXDATA | 100 | Décrit une surface de mémoire tampon de vertex. |
D3DFMT_INDEX16 | 101 | Profondeur de bits de mémoire tampon d’index 16 bits. |
D3DFMT_INDEX32 | 102 | Profondeur de bits de mémoire tampon d’index 32 bits. |
Tous les formats de gabarit de profondeur, à l’exception de D3DFMT_D16_LOCKABLE n’indiquent pas d’ordre de bits particulier par pixel, et le pilote est autorisé à consommer plus que le nombre indiqué de bits par canal de profondeur (mais pas de canal de gabarit).
Formats de texture compressés DXTn
Ces indicateurs sont utilisés pour les textures compressées :
Indicateurs de texture compressée DXTn | Valeur | Format |
---|---|---|
D3DFMT_DXT1 | MAKEFOURCC('D', 'X', 'T', '1') | Format de texture de compression DXT1 |
D3DFMT_DXT2 | MAKEFOURCC('D', 'X', 'T', '2') | Format de texture de compression DXT2 |
D3DFMT_DXT3 | MAKEFOURCC('D', 'X', 'T', '3') | Format de texture de compression DXT3 |
D3DFMT_DXT4 | MAKEFOURCC('D', 'X', 'T', '4') | Format de texture de compression DXT4 |
D3DFMT_DXT5 | MAKEFOURCC('D', 'X', 'T', '5') | Format de texture de compression DXT5 |
Le runtime n’autorise pas une application à créer une surface à l’aide d’un format DXTn, sauf si les dimensions de surface sont des multiples de 4. Cela s’applique aux surfaces simples hors écran, aux cibles de rendu, aux textures 2D, aux textures de cube et aux textures de volume.
formats Floating-Point
Ces indicateurs sont utilisés pour les formats de surface à virgule flottante. Ces formats 16 bits par canal sont également appelés formats s10e5.
Indicateurs à virgule flottante | Valeur | Format |
---|---|---|
D3DFMT_R16F | 111 | Format float 16 bits utilisant 16 bits pour le canal rouge. |
D3DFMT_G16R16F | 112 | Format float 32 bits utilisant 16 bits pour le canal rouge et 16 bits pour le canal vert. |
D3DFMT_A16B16G16R16F | 113 | Format float 64 bits utilisant 16 bits pour chaque canal (alpha, bleu, vert, rouge). |
FOURCC Formats
Les données au format FOURCC sont des données compressées.
MAKEFOURCC
Voici une macro permettant de générer des codes de quatre caractères :
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
Voici les formats FOURCC définis :
Indicateurs FOURCC | Valeur | Format |
---|---|---|
D3DFMT_MULTI2_ARGB8 | MAKEFOURCC('M','E','T','1') | Texture MultiElement (non compressée) |
D3DFMT_G8R8_G8B8 | MAKEFOURCC('G', 'R', 'G', 'B') | Format RVB 16 bits, analogue à YUY2 (Y0U0, Y1V0, Y2U2, etc.). Elle nécessite une paire de pixels pour représenter correctement la valeur de couleur. Le premier pixel de la paire contient 8 bits de vert (dans les 8 bits élevés) et 8 bits de rouge (dans les 8 bits bas). Le deuxième pixel contient 8 bits de vert (dans les 8 bits élevés) et 8 bits de bleu (dans les 8 bits bas). Ensemble, les deux pixels partagent les composants rouge et bleu, tandis que chacun a un composant vert unique (G0R0, G1B0, G2R2, etc.). L’échantillonneur de textures ne normalise pas les couleurs lors de la recherche dans un nuanceur de pixels ; elles restent comprises entre 0.0f et 255.0f. Cela est vrai pour tous les modèles de nuanceur de pixels programmables. Pour le nuanceur de pixels de fonction fixe, le matériel doit se normaliser à la plage 0.f à 1.f et le traiter essentiellement comme la texture YUY2. Le matériel qui expose ce format doit avoir le membre PixelShader1xMaxValue de D3DCAPS9 défini sur une valeur capable de gérer cette plage. |
D3DFMT_R8G8_B8G8 | MAKEFOURCC('R', 'G', 'B', 'G') | Format RVB 16 bits packé analogue à UYVY (U0Y0, V0Y1, U2Y2, etc.). Elle nécessite une paire de pixels pour représenter correctement la valeur de couleur. Le premier pixel de la paire contient 8 bits de vert (dans les 8 bits faibles) et 8 bits de rouge (dans les 8 bits élevés). Le deuxième pixel contient 8 bits de vert (dans les 8 bits bas) et 8 bits de bleu (dans les 8 bits élevés). Ensemble, les deux pixels partagent les composants rouge et bleu, tandis que chacun a un composant vert unique (R0G0, B0G1, R2G2, etc.). L’échantillonneur de textures ne normalise pas les couleurs lors de la recherche dans un nuanceur de pixels ; elles restent comprises entre 0.0f et 255.0f. Cela est vrai pour tous les modèles de nuanceur de pixels programmables. Pour le nuanceur de pixels de fonction fixe, le matériel doit se normaliser à la plage 0.f à 1.f et le traiter essentiellement comme la texture YUY2. Le matériel qui expose ce format doit avoir le membre PixelShader1xMaxValue de D3DCAPS9 défini sur une valeur capable de gérer cette plage. |
D3DFMT_UYVY | MAKEFOURCC('U', 'Y', 'V', 'Y') | Format UYVY (conformité PC98) |
D3DFMT_YUY2 | MAKEFOURCC('Y', 'U', 'Y', '2') | Format YUY2 (conformité PC98) |
IEEE Formats
Ces indicateurs sont utilisés pour les formats de surface à virgule flottante. Ces formats 32 bits par canal sont également appelés formats s23e8.
Indicateurs à virgule flottante | Valeur | Format |
---|---|---|
D3DFMT_R32F | 114 | Format float 32 bits utilisant 32 bits pour le canal rouge. |
D3DFMT_G32R32F | 115 | Format float 64 bits utilisant 32 bits pour le canal rouge et 32 bits pour le canal vert. |
D3DFMT_A32B32G32R32F | 116 | Format float 128 bits utilisant 32 bits pour chaque canal (alpha, bleu, vert, rouge). |
Formats mixtes
Les données dans des formats mixtes peuvent contenir une combinaison de données non signées et de données signées.
Indicateurs de format mixte | Valeur | Format |
---|---|---|
D3DFMT_L6V5U5 | 61 | Format de carte de bosses 16 bits avec luminance utilisant 6 bits pour la luminance, et 5 bits chacun pour v et vous. |
D3DFMT_X8L8V8U8 | 62 | Format de carte de bosses 32 bits avec luminance utilisant 8 bits pour chaque canal. |
D3DFMT_A2W10V10U10 | 67 | Format de carte de bosses 32 bits utilisant 2 bits pour alpha et 10 bits chacun pour w, v et vous. |
Formats signés
Les données dans un format signé peuvent être à la fois positives et négatives. Les formats signés utilisent des combinaisons de données (U), (V), (W) et (Q).
Indicateurs de format signé | Valeur | Format |
---|---|---|
D3DFMT_V8U8 | 60 | Format de carte de bosses 16 bits utilisant 8 bits chacun pour vous et les données v. |
D3DFMT_Q8W8V8U8 | 63 | Format de carte de bosses 32 bits utilisant 8 bits pour chaque canal. |
D3DFMT_V16U16 | 64 | Format de carte de bosses 32 bits utilisant 16 bits pour chaque canal. |
D3DFMT_Q16W16V16U16 | 110 | Format de carte de bosses 64 bits utilisant 16 bits pour chaque composant. |
D3DFMT_CxV8U8 | 117 | Format de compression normal 16 bits. L’échantillonneur de texture calcule le canal C à partir de : C = sqrt(1 - U² - V²). |
Formats non signés
Les données dans un format non signé doivent être positives. Les formats non signés utilisent des combinaisons de données (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance et (P)alette. Les données de palette sont également appelées données indexées en couleur, car elles sont utilisées pour indexer une palette de couleurs.
Indicateurs de format non signés | Valeur | Format |
---|---|---|
D3DFMT_R8G8B8 | 20 | Format de pixel RVB 24 bits avec 8 bits par canal. |
D3DFMT_A8R8G8B8 | 21 | Format de pixel ARGB 32 bits avec alpha, utilisant 8 bits par canal. |
D3DFMT_X8R8G8B8 | 22 | Format de pixel RVB 32 bits, où 8 bits sont réservés pour chaque couleur. |
D3DFMT_R5G6B5 | 23 | Format de pixel RVB 16 bits avec 5 bits pour le rouge, 6 bits pour le vert et 5 bits pour le bleu. |
D3DFMT_X1R5G5B5 | 24 | Format de pixels 16 bits où 5 bits sont réservés pour chaque couleur. |
D3DFMT_A1R5G5B5 | 25 | Format de pixels 16 bits où 5 bits sont réservés pour chaque couleur et 1 bit est réservé à l’alpha. |
D3DFMT_A4R4G4B4 | 26 | Format de pixel ARGB 16 bits avec 4 bits pour chaque canal. |
D3DFMT_R3G3B2 | 27 | Format de texture RVB 8 bits utilisant 3 bits pour le rouge, 3 bits pour le vert et 2 bits pour le bleu. |
D3DFMT_A8 | 28 | Alpha 8 bits uniquement. |
D3DFMT_A8R3G3B2 | 29 | Format de texture ARGB 16 bits utilisant 8 bits pour l’alpha, 3 bits chacun pour le rouge et le vert et 2 bits pour le bleu. |
D3DFMT_X4R4G4B4 | 30 | Format de pixel RVB 16 bits utilisant 4 bits pour chaque couleur. |
D3DFMT_A2B10G10R10 | 31 | Format de pixels 32 bits utilisant 10 bits pour chaque couleur et 2 bits pour l’alpha. |
D3DFMT_A8B8G8R8 | 32 | Format de pixel ARGB 32 bits avec alpha, utilisant 8 bits par canal. |
D3DFMT_X8B8G8R8 | 33 | Format de pixel RVB 32 bits, où 8 bits sont réservés pour chaque couleur. |
D3DFMT_G16R16 | 34 | Format de pixels 32 bits utilisant 16 bits chacun pour le vert et le rouge. |
D3DFMT_A2R10G10B10 | 35 | Format de pixels 32 bits utilisant 10 bits chacun pour le rouge, le vert et le bleu, et 2 bits pour l’alpha. |
D3DFMT_A16B16G16R16 | 36 | Format de pixels 64 bits utilisant 16 bits pour chaque composant. |
D3DFMT_A8P8 | 40 | Couleur 8 bits indexée avec 8 bits d’alpha. |
D3DFMT_P8 | 41 | Couleur 8 bits indexée. |
D3DFMT_L8 | 50 | Luminance 8 bits uniquement. |
D3DFMT_L16 | 81 | Luminance 16 bits uniquement. |
D3DFMT_A8L8 | 51 | 16 bits utilisant 8 bits chacun pour l’alpha et la luminance. |
D3DFMT_A4L4 | 52 | 8 bits utilisant 4 bits chacun pour l’alpha et la luminance. |
D3DFMT_A1 | 118 | Monochrome 1 bit.
Différences entre Direct3D 9 et Direct3D 9Ex : Cet indicateur est disponible dans Direct3D 9Ex uniquement. |
D3DFMT_A2B10G10R10_XR_BIAS | 119 | Point fixe biaisé de 2,8.
Différences entre Direct3D 9 et Direct3D 9Ex : Cet indicateur est disponible dans Direct3D 9Ex uniquement. |
D3DFMT_BINARYBUFFER | 199 | Format binaire indiquant que les données n’ont pas de type inhérent.
Différences entre Direct3D 9 et Direct3D 9Ex : Cet indicateur est disponible dans Direct3D 9Ex uniquement. |
Autres
Cet indicateur est utilisé pour les formats non définis.
Autres indicateurs | Valeur | Format |
---|---|---|
D3DFMT_UNKNOWN | 0 | Le format surface est inconnu |
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
Voir aussi