Struttura DDPIXELFORMAT (ksmedia.h)

La struttura DDPIXELFORMAT descrive il formato pixel di un oggetto DirectDrawSurface .

Sintassi

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;

Members

dwSize

Specifica le dimensioni in byte della struttura DDPIXELFORMAT. Il driver deve inizializzare questo membro prima dell'utilizzo della struttura.

Solo DirectX 9.0 e versioni successive. Specifica, all'input, la versione del runtime Microsoft DirectX usata dall'applicazione. Questo membro è impostato su DD_RUNTIME_VERSION, che è 0x00000900 per DirectX 9.0, nel membro di formato della struttura DD_GETFORMATDATA per una query di D3DGDI2_TYPE_GETFORMAT.

dwFlags

Indica un set di flag che specificano flag di controllo facoltativi. Questo membro è un OR bit per bit di uno dei valori seguenti:

Contrassegno Significato
DDPF_ALPHA Il formato pixel descrive una superficie solo alfa.
DDPF_ALPHAPIXELS La superficie contiene informazioni sul canale alfa nel formato pixel.
DDPF_ALPHAPREMULT I componenti di colore nel pixel sono premoltiplicati dal valore alfa nel pixel. Se questo flag è impostato, è necessario impostare anche il flag DDPF_ALPHAPIXELS. Se questo flag non è impostato, ma viene impostato il flag DDPF_ALPHAPIXELS, i componenti di colore nel formato pixel non vengono premoltiplicati da alpha. In questo caso, i componenti di colore devono essere moltiplicati per il valore alfa al momento in cui viene eseguita un'operazione di fusione alfa.
DDPF_BUMPDUDV I dati dUdV della mappa d'urto nel formato pixel sono validi.
DDPF_BUMPHEIGHT I dati di altezza della mappa d'urto nel formato pixel sono validi.
DDPF_COMPRESSED La superficie accetta i dati pixel nel formato specificato e lo comprime durante l'operazione di scrittura.
DDPF_D3DFORMAT Indica una voce di funzionalità di formato DirectX 8.0 e versioni successive nell'elenco dei formati di trama. Questo flag non è esposto alle applicazioni.
DDPF_FOURCC Il codice FOURCC è valido.
DDPF_LUMINANCE I dati di dominanza nel formato pixel sono validi. Utilizzare questo flag per le superfici luminanza-only o luminanza-plus-alfa; la profondità di bit viene quindi specificata nel membro dwLuminanceBitCount .
DDPF_LUMINANCEPIXELS I dati di dominanza nel formato pixel sono validi. Usare questo flag quando si blocca la luminanza, ad esempio le superfici della mappa d'urto. La maschera di bit per la parte di dominanza del pixel viene quindi specificata nel membro dwBumpLuminanceBitMask .
DDPF_NOVEL_TEXTURE_FORMAT Indica un nuovo formato di superficie che il runtime potrebbe non esporre a tutte le applicazioni.
DDPF_PALETTEINDEXED1 La superficie è a colori a 1 bit indicizzata.
DDPF_PALETTEINDEXED2 La superficie è a colori a 2 bit indicizzata.
DDPF_PALETTEINDEXED4 La superficie è a colori a 4 bit indicizzata.
DDPF_PALETTEINDEXED8 La superficie è indicizzata a colori a 8 bit.
DDPF_PALETTEINDEXEDTO8 La superficie è a 1, 2 o a 4 bit indicizzata in una tavolozza a 8 bit.
DDPF_RGB I dati RGB nella struttura del formato pixel sono validi.
DDPF_RGBTOYUV La superficie accetta i dati RGB e li converte durante l'operazione di scrittura in dati YUV. Il formato dei dati da scrivere è contenuto nella struttura del formato pixel. Il flag DDPF_RGB è impostato.
DDPF_STENCILBUFFER La superficie codifica gli stencil e le informazioni di profondità in ogni pixel del buffer z.
DDPF_YUV I dati YUV nella struttura del formato pixel sono validi.
DDPF_ZBUFFER Il formato pixel descrive una superficie di sola buffer z.
DDPF_ZPIXELS La superficie è in formato RGBZ.

dwFourCC

Specifica un codice di formato superficie che include uno dei codici nel D3DFORMAT tipo enumerato. Alcuni codici FOURCC fanno parte di D3DFORMAT. Per altre informazioni sulle D3DFORMAT, vedere la documentazione dell'SDK. I fornitori di hardware possono anche definire e fornire codici di formato specifici per l'hardware.

dwRGBBitCount

Specifica il numero di bit RGB per pixel (4, 8, 16, 24 o 32).

dwYUVBitCount

Specifica il numero di bit YUV per pixel.

dwZBufferBitDepth

Specifica la profondità del bit del buffer Z (8, 16, 24 o 32 bit).

dwAlphaBitDepth

Specifica la profondità del canale Alfa.

dwRBitMask

Specifica la maschera per i bit rossi.

dwYBitMask

Specifica la maschera per i bit Y.

dwGBitMask

Specifica la maschera per i bit verdi.

dwUBitMask

Specifica la maschera per i bit U.

dwBBitMask

Specifica la maschera per i bit blu.

dwVBitMask

Specifica la maschera per i bit V.

dwRGBAlphaBitMask

Maschera per il canale alfa.

dwYUVAlphaBitMask

Maschera per il canale alfa.

dwRGBZBitMask

Maschera per il canale Z.

dwYUVZBitMask

Maschera per il canale Z.

Commenti

Il runtime DirectX 8.0 e versioni successive impone le regole seguenti nell'elenco di operazioni (op):

  • È consentita una sola endian-ness (grande o piccola) per qualsiasi formato DS, ad esempio D15S1 o S1D15, non indipendentemente da altri bit.

  • Un elenco deve includere solo D3DFORMAT_OP_DISPLAYMODE per un formato di 16bpp ( ad esempio, non deve enumerare 5:5:5 e 5:6:5).

  • Un elenco non deve contenere formati alfa con D3DFORMAT_OP_DISPLAYMODE o D3DFORMAT_OP_3DACCELLERATION impostato.

  • Il flag D3DFORMAT_OP_3DACCELLERATION può essere impostato solo quando viene impostato anche il flag di D3DFORMAT_OP_DISPLAYMODE.

Se il driver supporta un D16 bloccabile, deve segnalare D3DFMT_D16_LOCKABLE nell'elenco operativo; in caso contrario, deve segnalare D3DFMT_D16.

I driver che supportano il multicampionamento devono compilare MultiSampleCaps nei formati Depth/Stencil per i quali è possibile supportare il multicampionamento. In questo modo il runtime può rilevare se un driver supporta il multicampionamento per combinazioni di formati di destinazione di rendering e buffer Z. Per altre informazioni sulle restrizioni relative all'estensione del multicampionamento blt, vedere la descrizione di D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE limite nei rastercap contenuti nella struttura D3DCAPS8 nella documentazione dell'SDK.

Il tipo enumerato D3DMULTISAMPLE_TYPE definito in d3d8types.h viene usato quando si impostano i bit in wFlipMSTypes e wBltMSTypes. Per specificare il supporto per un numero specifico di campioni per pixel, è sufficiente spostare logicamente 1 per il valore appropriato dal tipo enumerato D3DMULTISAMPLE_TYPE meno 1 e OR nel campo appropriato (wFlipMSTypes e wBltMSTypes).

Ad esempio, se il driver supporta sia due che quattro campioni per pixel quando si capovolge (modalità schermo intero) e quattro campioni per pixel quando si blitting (modalità finestra) in X8R8G8B8 superficie verrà segnalata la voce seguente nell'elenco dei formati di superficie.

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));

Non è necessario specificare 1 << (D3DMULTISAMPLE_NONE - 1) nei formati di creazione di report. Si presuppone che qualsiasi formato segnalato possa essere usato anche senza multicampionamento. Se l'hardware supporta il rendering multisample con un buffer z, anche i formati di z-buffer segnalati devono includere i campioni supportati per pixel.

Requisiti

Requisito Valore
Intestazione ksmedia.h (include Ddraw.h)