Platform SDK: DirectX

パレットとは?

パレット化サーフェスは、有意な表示をするためにパレットを必要とする。パレット化サーフェスはカラー インデックス付きサーフェスとも呼ばれ、個々の番号がピクセルを表す番号の集合となる。番号の値は、個々のピクセルを表示するときにどの色を使用すべきかを DirectDraw に伝えるカラー テーブル へのインデックスである。単にパレットとも呼ばれる DirectDrawPalette オブジェクトは、カラー テーブルを簡単に制御する手段を提供する。16 ビット以上のピクセル フォーマットを使用するサーフェスは、パレットを使用しない。

DirectDrawPalette オブジェクトは、インデックス付きカラー テーブルを表す。このカラー テーブルには、カラーインデックス付きサーフェスで用いる 2、4、16、または 256 のエントリがある。パレットの個々のエントリは、サーフェス内でピクセルを表示するときに使用する色を記述する RGB トリプレットである。カラー テーブルには、使用する色を表す 16 ビット、または 24 ビット RGB トリプレットが含まれている。16 色パレットでは、テーブルに別の 256 色パレットへのインデックスを含むこともできる。テクスチャ、オフスクリーン サーフェス、およびオーバーレイ サーフェスに対してパレットがサポートされており、いずれもプライマリ サーフェスと同じパレットである必要はない。

[C++]

IDirectDraw7::CreatePalette を呼び出すことで、パレットを作成できる。このメソッドは、パレット オブジェクトの IDirectDrawPalette インターフェイスへのポインタを取得する。このインターフェイスのメソッドを使い、パレット エントリの操作、オブジェクトの能力に関する情報の取得、またはオブジェクトの初期化ができる (CoCreateInstance COM 関数を使ってオブジェクトを作成した場合)。

サーフェスの IDirectDrawSurface7::SetPalette メソッドを呼び出すことにより、サーフェスにパレットを適用できる。1 つのパレットを複数のサーフェスに適用することができる。

DirectDrawPalette オブジェクトは、8 ビット パレットのエントリ 0、およびエントリ 255 を取得する。ただし、DDPCAPS_ALLOW256 フラグを指定して、これらのエントリを利用することを要求しない場合にかぎる。

パレット エントリを取得するには、IDirectDrawPalette::GetEntries メソッドを使用する。エントリを変更するには、IDirectDrawPalette::SetEntries メソッドを使用する。

SDK の Ddutil.cpp ソース ファイルには、パレットと共に作用するためにアプリケーションで定義された便利な関数が含まれている。詳細については、ソース ファイルの DDLoadPalette 関数を参照すること。

[Visual Basic]

DirectDraw7.CreatePalette メソッドを呼び出すことで、パレットを作成できる。このメソッドは、DirectDrawPalette オブジェクトを返す。このオブジェクトのメソッドを使い、パレット エントリの操作およびオブジェクトの能力に関する情報の取得ができる。

サーフェスの DirectDrawSurface7.SetPalette メソッドを呼び出すことにより、サーフェスにパレットを追加できる。1 つのパレットを複数のサーフェスに適用することができる。

DirectDrawPalette オブジェクトは、8 ビット パレットのエントリ 0、およびエントリ 255 を取得する。ただし、DDPCAPS_ALLOW256 フラグを指定して、これらのエントリを利用することを要求しない場合にかぎる。

パレット エントリを取得するには、DirectDrawPalette.GetEntries メソッドを使用する。エントリを変更するには、DirectDrawPalette.SetEntries メソッドを使用する。