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)