DDPIXELFORMAT 構造体 (ksmedia.h)
DDPIXELFORMAT 構造体は、DirectDrawSurface オブジェクトのピクセル形式を記述します。
構文
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;
メンバーズ
dwSize
DDPIXELFORMAT 構造体のサイズをバイト単位で指定します。 ドライバーは、構造体を使用する前に、このメンバーを初期化する必要があります。
DirectX 9.0 以降のバージョンのみ。 入力時に、アプリケーションで使用されている Microsoft DirectX ランタイムのバージョンを指定します。 このメンバーは、D3DGDI2_TYPE_GETFORMAT クエリの DD_GETFORMATDATA 構造のメンバー 形式で DirectX 9.0 に0x00000900 DD_RUNTIME_VERSIONに設定されます。
dwFlags
省略可能なコントロール フラグを指定するフラグのセットを示します。 このメンバーは、次のいずれかの値のビットごとの OR です。
旗 | 意味 |
---|---|
DDPF_ALPHA | ピクセル形式は、アルファのみのサーフェスを表します。 |
DDPF_ALPHAPIXELS | サーフェスには、ピクセル形式のアルファ チャネル情報があります。 |
DDPF_ALPHAPREMULT | ピクセル内のカラー コンポーネントは、ピクセル内のアルファ値によって事前乗算されます。 このフラグを設定する場合は、DDPF_ALPHAPIXELS フラグも設定する必要があります。 このフラグが設定されていないが、DDPF_ALPHAPIXELS フラグが設定されている場合、ピクセル形式のカラー コンポーネントはアルファで事前乗算されません。 この場合、アルファ ブレンド操作が実行されるときに、色成分にアルファ値を乗算する必要があります。 |
DDPF_BUMPDUDV | ピクセル形式のバンプ マップ dUdV データは有効です。 |
DDPF_BUMPHEIGHT | ピクセル形式のバンプ マップの高さデータは有効です。 |
DDPF_COMPRESSED | サーフェスは、指定された形式のピクセル データを受け入れ、書き込み操作中に圧縮します。 |
DDPF_D3DFORMAT | テクスチャフォーマットリストの DirectX 8.0 以降のフォーマット機能エントリを示します。 このフラグは、アプリケーションには公開されません。 |
DDPF_FOURCC | FOURCC コードは有効です。 |
DDPF_LUMINANCE | ピクセル形式の輝度データは有効です。 このフラグは、輝度のみのサーフェスまたは輝度プラスアルファ サーフェスに使用します。ビット深度は、dwLuminanceBitCount メンバーで指定されます。 |
DDPF_LUMINANCEPIXELS | ピクセル形式の輝度データは有効です。 このフラグは、バンプマップ サーフェスなどの輝度をオフにした場合に使用します。 ピクセルの輝度部分のビットマスクは、dwBumpLuminanceBitMask メンバーで指定されます。 |
DDPF_NOVEL_TEXTURE_FORMAT | ランタイムがすべてのアプリケーションに公開しない可能性がある新しいサーフェス形式を示します。 |
DDPF_PALETTEINDEXED1 | サーフェスには、1 ビットのカラー インデックスが付けられます。 |
DDPF_PALETTEINDEXED2 | サーフェスには 2 ビットカラーインデックスが付けられます。 |
DDPF_PALETTEINDEXED4 | サーフェスには 4 ビットカラーインデックスが付けられます。 |
DDPF_PALETTEINDEXED8 | サーフェスには 8 ビットカラーインデックスが付けられます。 |
DDPF_PALETTEINDEXEDTO8 | サーフェスは、8 ビット パレットにインデックスが付いた 1 ビット、2 ビット、または 4 ビットのカラーです。 |
DDPF_RGB | ピクセル形式構造の RGB データは有効です。 |
DDPF_RGBTOYUV | サーフェスは RGB データを受け入れ、書き込み操作中に YUV データに変換します。 書き込むデータの形式は、ピクセル形式の構造に含まれています。 DDPF_RGB フラグが設定されています。 |
DDPF_STENCILBUFFER | サーフェスは、z バッファーの各ピクセルのステンシルと深度情報をエンコードします。 |
DDPF_YUV | ピクセル形式構造の YUV データが有効です。 |
DDPF_ZBUFFER | ピクセル形式は、z バッファーのみのサーフェスを表します。 |
DDPF_ZPIXELS | サーフェスは RGBZ 形式です。 |
dwFourCC
D3DFORMAT列挙型のいずれかのコードを含むサーフェス書式コードを指定します。 FOURCC コード 一部は、D3DFORMATの一部です。 D3DFORMATの詳細については、SDK のドキュメントを参照してください。 ハードウェア ベンダーは、ハードウェアに固有の形式コードを定義して提供することもできます。
dwRGBBitCount
ピクセルあたりの RGB ビット数 (4、8、16、24、または 32) を指定します。
dwYUVBitCount
ピクセルあたりの YUV ビット数を指定します。
dwZBufferBitDepth
Z バッファー のビット深度 (8、16、24、または 32 ビット) を指定します。
dwAlphaBitDepth
アルファ チャネルのビット深度を指定します。
dwRBitMask
赤いビットのマスクを指定します。
dwYBitMask
Y ビットのマスクを指定します。
dwGBitMask
緑のビットのマスクを指定します。
dwUBitMask
U ビットのマスクを指定します。
dwBBitMask
青いビットのマスクを指定します。
dwVBitMask
V ビットのマスクを指定します。
dwRGBAlphaBitMask
アルファ チャネルのマスク。
dwYUVAlphaBitMask
アルファ チャネルのマスク。
dwRGBZBitMask
Z チャンネルのマスク。
dwYUVZBitMask
Z チャンネルのマスク。
備考
DirectX 8.0 以降のランタイムでは、操作 (op) リストに次の規則が課されます。
D15S1 や S1D15 など、任意の DS 形式に対して 1 つのエンディアン (ビッグまたはリトル) のみが許可され、他のビットに依存しません。
リストには、1 つの 16bpp 形式のD3DFORMAT_OP_DISPLAYMODEのみを含める必要があります (たとえば、5:5:5 と 5:6:5 を列挙しないでください)。
リストには、D3DFORMAT_OP_DISPLAYMODEまたはD3DFORMAT_OP_3DACCELLERATIONが設定されたアルファ形式を含めてはなりません。
D3DFORMAT_OP_3DACCELLERATION フラグは、D3DFORMAT_OP_DISPLAYMODE フラグも設定されている場合にのみ設定できます。
ドライバーがロック可能な D16 をサポートしている場合は、操作リストにD3DFMT_D16_LOCKABLEを報告する必要があります。それ以外の場合は、D3DFMT_D16を報告する必要があります。
マルチサンプリングをサポートするドライバーは、マルチサンプリングをサポートできる深度/ステンシル形式で、MultiSampleCaps に入力する必要があります。 これにより、ドライバーがレンダー ターゲットと Z バッファー形式の組み合わせに対してマルチサンプリングをサポートしているかどうかをランタイムが検出できます。 ストレッチ blt マルチサンプリングに関連する制限の詳細については、SDK ドキュメントのD3DCAPS8構造に含まれる rastercaps のD3DPRASTERCAPS_STRETCHBLTMULTISAMPLEキャップの説明を参照してください。
d3d8types.h で定義されている列挙型D3DMULTISAMPLE_TYPEは、wFlipMSTypes および wBltMSTypes ビットを設定するときに使用されます。 ピクセルあたりの特定のサンプル数のサポートを指定するには、D3DMULTISAMPLE_TYPE列挙型 (1 未満) から適切な値で 1 を論理的にシフトし、これを適切なフィールド (wFlipMSTypes と wBltMSTypes) に単純にシフトします。
たとえば、ドライバーが反転時にピクセルあたり 2 つのサンプルと 4 つのサンプルの両方をサポートしている場合 (全画面表示モード)、1 ピクセルあたり 4 つのサンプルがX8R8G8B8サーフェス上の blitting (ウィンドウ モード) の場合、次のエントリがサーフェス形式の一覧で報告されます。
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));
形式をレポートするときに、1 << (D3DMULTISAMPLE_NONE - 1) を指定する必要はありません。 報告された任意の形式をマルチサンプリングなしで使用することも想定されています。 ハードウェアが z バッファーを使用したマルチサンプル レンダリングをサポートしている場合、報告される z バッファー形式には、サポートされているピクセル単位のサンプルも含める必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ksmedia.h (Ddraw.h を含む) |