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 l’utilisation de la structure.
DirectX 9.0 et versions ultérieures uniquement. Spécifie, lors de l’entrée, la version du runtime Microsoft DirectX utilisée par l’application. Ce membre est défini sur DD_RUNTIME_VERSION, 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 :
Drapeau | Signification |
---|---|
DDPF_ALPHA | Le format de pixel décrit une surface alpha seule. |
DDPF_ALPHAPIXELS | La surface contient des informations de canal alpha au format pixel. |
DDPF_ALPHAPREMULT | Les composants de couleur du pixel sont prémultipliés par la valeur alpha du 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 de la carte de choc au format de pixel sont valides. |
DDPF_BUMPHEIGHT | Les données de hauteur de la carte de choc au format de pixel sont valides. |
DDPF_COMPRESSED | La surface accepte les données de pixels au format spécifié et la compresse pendant l’opération d’écriture. |
DDPF_D3DFORMAT | Indique une entrée de fonctionnalité de mise en forme DirectX 8.0 et ultérieure dans la liste de 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 de pixel sont valides. Utilisez cet indicateur pour les surfaces luminance-only ou luminance-plus-alpha ; la profondeur du bit est ensuite spécifiée dans le membre dwLuminanceBitCount. |
DDPF_LUMINANCEPIXELS | Les données De Luminance au format de pixel sont valides. Utilisez cet indicateur lors de la suspension de la luminosité, par exemple, des surfaces de bumpmap. Le masque de bits pour la partie de luminosité du pixel est ensuite spécifié dans le membre dwBumpLuminanceBitMask membre. |
DDPF_NOVEL_TEXTURE_FORMAT | Indique un nouveau format d’aire que le runtime peut ne pas exposer à toutes les applications. |
DDPF_PALETTEINDEXED1 | La surface est indexée de couleur 1 bits. |
DDPF_PALETTEINDEXED2 | La surface est indexée en couleur 2 bits. |
DDPF_PALETTEINDEXED4 | La surface est indexée de couleur 4 bits. |
DDPF_PALETTEINDEXED8 | La surface est indexée en couleur 8 bits. |
DDPF_PALETTEINDEXEDTO8 | La surface est de couleur 1, 2 ou 4 bits indexée à une palette 8 bits. |
DDPF_RGB | Les données RVB de 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 de la structure de format de pixels sont valides. |
DDPF_ZBUFFER | Le format de pixel décrit une surface z-buffer uniquement. |
DDPF_ZPIXELS | La surface est au format RVBZ. |
dwFourCC
Spécifie un code de format surface, y compris l’un des codes de la D3DFORMAT type énuméré. 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 du bit de mémoire tampon Z (8, 16, 24 ou 32 bits).
dwAlphaBitDepth
Spécifie la profondeur du bit 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 sur la liste des opérations :
Un seul endian-ness (grand ou petit) pour n’importe quel format DS est autorisé, par exemple D15S1 ou S1D15, pas les deux indépendamment des autres bits.
Une liste ne doit inclure que D3DFORMAT_OP_DISPLAYMODE pour un format 16bpp exactement (par exemple, elle ne doit pas énumérer 5:5:5 et 5:6:5).
Une liste ne doit contenir aucun format 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 de D3DFORMAT_OP_DISPLAYMODE est également défini.
Si le pilote prend en charge un D16 verrouillé, il doit signaler D3DFMT_D16_LOCKABLE dans la liste des opérations ; sinon, il doit signaler D3DFMT_D16.
Les pilotes prenant en charge l’échantillonnage multiple doivent renseigner les multisampleCaps dans les formats de profondeur/gabarit pour lesquels le multisampling peut être pris en charge. Cela permet au runtime de détecter si un pilote prend en charge l’échantillonnage multiple pour les combinaisons de formats de mémoire tampon cible et Z de rendu. Pour plus d’informations sur les restrictions relatives à l’échantillonnage multisampling stretch blt, 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’échantillons par pixel, déplacez logiquement 1 par la valeur appropriée du type énuméré D3DMULTISAMPLE_TYPE moins 1 et OR dans le champ approprié (wFlipMSTypes et wBltMSTypes).
Par exemple, si le pilote prend en charge deux et quatre exemples par pixel lors du glissement (mode plein écran) et de quatre exemples par pixel lors de la blitting (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 de la création de rapports. Il est supposé que n’importe quel format signalé peut également être utilisé sans multisampling. Si le matériel prend en charge le rendu multisample avec une mémoire tampon z, les formats z-buffer signalés doivent également inclure les exemples pris en charge par pixels.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ksmedia.h (include Ddraw.h) |