Platform SDK: DirectX |
DirectDraw は、1 ビット (2 エントリ)、2 ビット (4 エントリ)、4 ビット (16 エントリ)、および 8 ビット (256 エントリ) パレットをサポートする。パレットは、ピクセル フォーマットが適合するサーフェスだけにアタッチすることができる。たとえば、DDPCAPS_1BIT フラグを指定して作成された 2 エントリパレットは、DDPF_PALETTEINDEXED1 フラグを指定して作成された 1 ビット サーフェスだけにアタッチすることができる。
さらに、インデックス パレット と呼ばれるカラー テーブルをまったく含まないパレットも作成できる。インデックス パレットには、カラー テーブルの代わりに、別のパレットのカラー テーブルにおける位置を表すインデックス値が含まれる。
インデックス パレットを作成するには、IDirectDraw7::CreatePalette メソッドを呼び出すときに、DDPCAPS_8BITENTRIES フラグを指定する。たとえば、4 ビットのインデックス パレットを作成するには、DDPCAPS_4BIT および DDPCAPS_8BITENTRIES の両方のフラグを指定する。また、インデックス パレットを作成する場合、PALTTEENTRY 構造体の配列へのポインタよりも、バイト配列へのポインタを渡す。IDirectDraw7::CreatePalette メソッドを使う場合は、LPPALETTEENTRY 型にバイトの配列へのポインタをキャストしなければならない。
ブリット処理中に、DirectDraw はインデックス パレット エントリを逆参照しないことに注意すること。
インデックス パレットを作成するには、DirectDraw7.CreatePalette メソッドを呼び出すときに、DDPCAPS_8BITENTRIES フラグを指定する。たとえば、4 ビットのインデックス パレットを作成するには、DDPCAPS_4BIT および DDPCAPS_8BITENTRIES の両方のフラグを指定する。また、インデックス パレットを作成する場合、PALETTEENTRY 型の配列よりも、バイト配列を渡す。