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