Structure DDPIXELFORMAT (ksmedia.h)
La structure DDPIXELFORMAT décrit le format de pixel d’un objet DirectDrawSurface .
Syntaxe
typedef struct _DDPIXELFORMAT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwFourCC;
union {
DWORD dwRGBBitCount;
DWORD dwYUVBitCount;
DWORD dwZBufferBitDepth;
DWORD dwAlphaBitDepth;
};
union {
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union {
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union {
DWORD dwBBitMask;
DWORD dwVBitMask;
};
union {
DWORD dwRGBAlphaBitMask;
DWORD dwYUVAlphaBitMask;
DWORD dwRGBZBitMask;
DWORD dwYUVZBitMask;
};
} DDPIXELFORMAT, *LPDDPIXELFORMAT;
Membres
dwSize
Spécifie la taille en octets de la structure DDPIXELFORMAT. Le pilote doit initialiser ce membre avant d’utiliser la structure.
DirectX 9.0 et versions ultérieures uniquement. Spécifie, lors de l’entrée, la version du runtime Microsoft DirectX utilisé par l’application. Ce membre est défini sur DD_RUNTIME_VERSION, ce qui est 0x00000900 pour DirectX 9.0, au format membre de la structure DD_GETFORMATDATA pour une requête D3DGDI2_TYPE_GETFORMAT.
dwFlags
Indique un ensemble d’indicateurs qui spécifient des indicateurs de contrôle facultatifs. Ce membre est un or au niveau du bit de l’une des valeurs suivantes :
Indicateur | Signification |
---|---|
DDPF_ALPHA | Le format de pixels décrit une surface alpha uniquement. |
DDPF_ALPHAPIXELS | La surface contient des informations de canal alpha au format pixel. |
DDPF_ALPHAPREMULT | Les composants de couleur dans le pixel sont prémultipliés par la valeur alpha dans le pixel. Si cet indicateur est défini, l’indicateur DDPF_ALPHAPIXELS doit également être défini. Si cet indicateur n’est pas défini, mais que l’indicateur DDPF_ALPHAPIXELS est défini, les composants de couleur au format pixel ne sont pas prémultipliés par alpha. Dans ce cas, les composants de couleur doivent être multipliés par la valeur alpha au moment où une opération de fusion alpha est effectuée. |
DDPF_BUMPDUDV | Les données dUdV du mappage de bosses au format de pixels sont valides. |
DDPF_BUMPHEIGHT | Les données de hauteur de la carte de bosses au format de pixels sont valides. |
DDPF_COMPRESSED | La surface accepte les données de pixels au format spécifié et les compresse pendant l’opération d’écriture. |
DDPF_D3DFORMAT | Indique une entrée de capacité de format DirectX 8.0 et versions ultérieures dans la liste des formats de texture. Cet indicateur n’est pas exposé aux applications. |
DDPF_FOURCC | Le code FOURCC est valide. |
DDPF_LUMINANCE | Les données de luminance au format pixel sont valides. Utilisez cet indicateur pour les surfaces luminance-only ou luminance-plus-alpha ; la profondeur de bits est ensuite spécifiée dans le membre dwLuminanceBitCount . |
DDPF_LUMINANCEPIXELS | Les données de luminance au format pixel sont valides. Utilisez cet indicateur lors de la suspension de la luminance, par exemple des surfaces de bumpmap. Le masque de bits pour la partie luminance du pixel est ensuite spécifié dans le membre dwBumpLuminanceBitMask . |
DDPF_NOVEL_TEXTURE_FORMAT | Indique un nouveau format de surface que le runtime peut ne pas exposer à toutes les applications. |
DDPF_PALETTEINDEXED1 | La surface est indexée en couleur 1 bits. |
DDPF_PALETTEINDEXED2 | La surface est indexée en couleur 2 bits. |
DDPF_PALETTEINDEXED4 | La surface est indexée en couleur 4 bits. |
DDPF_PALETTEINDEXED8 | La surface est indexée en couleur 8 bits. |
DDPF_PALETTEINDEXEDTO8 | La surface est une couleur 1, 2 ou 4 bits indexée dans une palette 8 bits. |
DDPF_RGB | Les données RVB dans la structure de format de pixels sont valides. |
DDPF_RGBTOYUV | La surface accepte les données RVB et les traduit pendant l’opération d’écriture en données YUV. Le format des données à écrire est contenu dans la structure de format de pixels. L’indicateur DDPF_RGB est défini. |
DDPF_STENCILBUFFER | La surface encode les informations de gabarit et de profondeur dans chaque pixel de la mémoire tampon z. |
DDPF_YUV | Les données YUV dans la structure de format pixel sont valides. |
DDPF_ZBUFFER | Le format de pixels décrit une surface z-buffer-only. |
DDPF_ZPIXELS | La surface est au format RVBZ. |
dwFourCC
Spécifie un code de format surface incluant l’un des codes du type énuméré D3DFORMAT. Certains codes FOURCC font partie de D3DFORMAT. Pour plus d’informations sur D3DFORMAT, consultez la documentation du Kit de développement logiciel (SDK). Les fournisseurs de matériel peuvent également définir et fournir des codes de format spécifiques à leur matériel.
dwRGBBitCount
Spécifie le nombre de bits RVB par pixel (4, 8, 16, 24 ou 32).
dwYUVBitCount
Spécifie le nombre de bits YUV par pixel.
dwZBufferBitDepth
Spécifie la profondeur de bits de mémoire tampon Z (8, 16, 24 ou 32 bits).
dwAlphaBitDepth
Spécifie la profondeur de bits du canal Alpha.
dwRBitMask
Spécifie le masque pour les bits rouges.
dwYBitMask
Spécifie le masque pour les bits Y.
dwGBitMask
Spécifie le masque pour les bits verts.
dwUBitMask
Spécifie le masque pour les bits U.
dwBBitMask
Spécifie le masque pour les bits bleus.
dwVBitMask
Spécifie le masque pour les bits V.
dwRGBAlphaBitMask
Masque pour le canal alpha.
dwYUVAlphaBitMask
Masque pour le canal alpha.
dwRGBZBitMask
Masque pour le canal Z.
dwYUVZBitMask
Masque pour le canal Z.
Remarques
Le runtime DirectX 8.0 et ultérieur impose les règles suivantes à la liste des opérations (op) :
Un seul endian-ness (grand ou petit) pour n’importe quel format DS est autorisé, par exemple D15S1 ou S1D15, non indépendant des autres bits.
Une liste ne doit inclure D3DFORMAT_OP_DISPLAYMODE que pour un format 16bpp (par exemple, elle ne doit pas énumérer 5 :5 :5 et 5 :6 :5).
Une liste ne doit pas contenir de formats alpha avec D3DFORMAT_OP_DISPLAYMODE ou D3DFORMAT_OP_3DACCELLERATION défini.
L’indicateur D3DFORMAT_OP_3DACCELLERATION ne peut être défini que lorsque l’indicateur D3DFORMAT_OP_DISPLAYMODE est également défini.
Si le pilote prend en charge un D16 verrouillable, il doit signaler D3DFMT_D16_LOCKABLE dans la liste des opérations ; sinon, il devrait signaler D3DFMT_D16.
Les pilotes prenant en charge le multiéchantillonnage doivent remplir les MultiSampleCaps dans les formats profondeur/gabarit pour lesquels le multi-échantillonnage peut être pris en charge. Cela permet au runtime de détecter si un pilote prend en charge le multi-échantillonnage pour les combinaisons de formats cible de rendu et de mémoire tampon Z. Pour plus d’informations sur les restrictions liées à l’échantillonnage multiéchantillonnage étendu, consultez la description de D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE limite dans les rastercaps contenues dans la structure D3DCAPS8 dans la documentation du Kit de développement logiciel (SDK).
Le type énuméré D3DMULTISAMPLE_TYPE défini dans d3d8types.h est utilisé lors de la définition des bits dans wFlipMSTypes et wBltMSTypes. Pour spécifier la prise en charge d’un nombre spécifique d’exemples par pixel, il suffit de déplacer logiquement 1 en fonction de la valeur appropriée à partir de l’D3DMULTISAMPLE_TYPE le type énuméré moins 1 et OR ceci dans le champ approprié (wFlipMSTypes et wBltMSTypes).
Par exemple, si le pilote prend en charge deux et quatre exemples par pixel lors du basculement (mode plein écran) et quatre exemples par pixel lors de la fente (mode fenêtré) sur X8R8G8B8 surface, l’entrée suivante est signalée dans la liste des formats de surface.
DDPIXELFORMAT ddpf;
ZeroMemory(&ddpf, sizeof(ddpf));
ddpf.dwSize = sizeof(DDPIXELFORMAT);
ddpf.dwFlags = DDPF_D3DFORMAT;
ddpf.dwFourCC = D3DFMT_X8R8G8B8;
ddpf.dwOperations = D3DFORMAT_OP_DISPLAYMODE |
D3DFORMAT_OP_3DACCELERATION;
ddpf.MultiSampleCaps.wFlipMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1))
| (1 << (D3DMULTISAMPLE_2_SAMPLES âˆ' 1));
ddpf.MultiSampleCaps.wBltMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1));
Il n’est pas nécessaire de spécifier 1 << (D3DMULTISAMPLE_NONE - 1) lors des formats de création de rapports. Il est supposé que n’importe quel format signalé peut également être utilisé sans multi-échantillonnage. Si le matériel prend en charge le rendu multi-échantillon avec une mémoire tampon z, les formats z-buffer signalés doivent également inclure les exemples pris en charge par pixels.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ksmedia.h (include Ddraw.h) |