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

1 ピクセルあたりの 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 でビットを設定するときに使用されます。 ピクセルあたりの特定の数のサンプルのサポートを指定するには、列挙された型が 1 未満のD3DMULTISAMPLE_TYPEから適切な値で 1 を論理的にシフトし、またはこれを適切なフィールド (wFlipMSTypeswBltMSTypes) に移動します。

たとえば、ドライバーが反転時に 1 ピクセルあたり 2 サンプルと 4 サンプルの両方をサポートしている場合 (全画面表示モード) と、サーフェス上の blitting (ウィンドウ モード) 時にピクセルあたり 4 つのサンプルX8R8G8B8サーフェス形式の一覧で次のエントリが報告されます。

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 バッファー形式には、サポートされているピクセル単位のサンプルも含める必要があります。

要件

要件
Header ksmedia.h (Ddraw.h を含む)