Partager via


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)