Platform SDK: DirectX

パレット化テクスチャ

[C++]

Direct3D デバイスは、アタッチされたパレットを使用するテクスチャ サーフェスからのテクスチャ処理をサポートする。このタイプのテクスチャのことを "パレット化テクスチャ" と呼ぶ。パレット化テクスチャは DirectDrawSurface オブジェクトである。このオブジェクトは、DDSCAPS_TEXTURE 機能によって生成され、DDPF_PALETTEINDEXEDn ピクセル フォーマット (n は 1、2、4、または 8) のいずれかを使用する。この機能は、テクスチャの作成に使用する DDSURFACEDESC2 構造体 (および、この記述に含まれる DDPIXELFORMAT 構造体) に含まれている。すべてのパレット化サーフェスと同様、色ではなく各ピクセルが、アタッチされた DirectDrawPalette オブジェクト内に保持される値のテーブルへのインデックスになる。パレット化サーフェスの作成および使用の詳細については、DirectDraw ドキュメントの「サーフェス」および「パレット」を参照すること。テクスチャ関連デバイス機能をチェックする場合と同様、IDirect3DDevice7::EnumTextureFormats メソッドを呼び出して、サポートされているテクスチャ ピクセル フォーマットを必ず確認すること。

パレット化テクスチャを準備するには

  1. ここで説明したように、DirectDraw と Direct3D の機能をチェックする。
  2. DDSCAPS_TEXTURE 機能を含み、DDPF_PALETTEINDEXEDn ピクセル フォーマットのいずれかを使用するサーフェスを必要な大きさで作成する。
  3. DirectDrawPalette オブジェクトを作成し、初期化する。詳細については、DirectDraw ドキュメントの「パレット」を参照すること (アルファ専用パレット化テクスチャを使用するには、パレットを作成するときに DDPCAPS_ALPHA 機能を含める。詳細については、IDirectDraw7::CreatePalette のリファレンスを参照すること)。
  4. テクスチャ サーフェスに対して IDirectDrawSurface7::SetPalette メソッドを呼び出して、パレットをサーフェスにアタッチする。

 :  パレット化テクスチャ サーフェスを作成したが、パレットをアタッチしなかった場合、レンダリング中に Direct3D 直接モード内でアプリケーションのアクセス違反が発生する。

パレット化テクスチャで使用するパレットは、色データのみ使用する必要はない。場合によっては、デバイスが、アルファ情報を含むテクスチャ パレットをサポートしていることもある。その場合、IDirectDraw7::GetCaps メソッドを呼び出すと、DirectDraw は DDPCAPS_ALPHA パレット能力フラグを公開する。このフラグは、関連する DDCAPS 構造体の dwPalCaps メンバにある。レンダリング デバイスでアルファ対応パレット化テクスチャからのテクスチャ処理を実行できる場合、IDirect3DDevice7::GetCaps を呼び出すと、このレンダリング デバイスは D3DPTEXTURECAPS_ALPHAPALETTE 機能を公開する (D3DPTEXTURECAPS_ALPHAPALETTE フラグは、この呼び出しで渡す D3DDEVICEDESC7 構造体に含まれる 2 つの D3DPRIMCAPS 構造体にある)。

[Visual Basic]

Direct3D デバイスは、アタッチされたパレットを使用するテクスチャ サーフェスからのテクスチャ処理をサポートする。このタイプのテクスチャのことを "パレット化テクスチャ" と呼ぶ。パレット化テクスチャは DirectDrawSurface オブジェクトである。このオブジェクトは、DDSCAPS_TEXTURE 機能によって生成され、DDPF_PALETTEINDEXEDn ピクセル フォーマット (n は 1、2、4、または 8) のいずれかを使用する。この機能は、テクスチャの作成に使用する DDSURFACEDESC2 型 (および、この記述に含まれる DDPIXELFORMAT 型) に含まれている。すべてのパレット化サーフェスと同様、色ではなく各ピクセルが、アタッチされた DirectDrawPalette オブジェクト内に保持される値のテーブルへのインデックスになる。パレット化サーフェスの作成および使用の詳細については、DirectDraw ドキュメントの「サーフェス」および「パレット」を参照すること。テクスチャ関連デバイス機能をチェックする場合と同様、Direct3DDevice7.GetTextureFormatsEnum メソッドによって取得した Direct3DEnumPixelFormats クラスを使用して、サポートされているテクスチャ ピクセル フォーマットを必ず確認すること。

パレット化テクスチャを準備するには

  1. ここで説明したように、DirectDraw と Direct3D の機能をチェックする。
  2. DDSCAPS_TEXTURE 機能を含み、DDPF_PALETTEINDEXEDn ピクセル フォーマットのいずれかを使用するサーフェスを必要な大きさで作成する。
  3. DirectDrawPalette オブジェクトを作成し、初期化する。詳細については、DirectDraw ドキュメントの「パレット」を参照すること (アルファ専用パレット化テクスチャを使用するには、パレットを作成するときに DDPCAPS_ALPHA 機能を含める。詳細については、DirectDraw7.CreatePalette のリファレンスを参照すること)。
  4. テクスチャ サーフェスに対して DirectDrawSurface7.SetPalette メソッドを呼び出して、パレットをサーフェスにアタッチする。

 :  パレット化テクスチャ サーフェスを作成したが、パレットをアタッチしなかった場合、レンダリング中に Direct3D 直接モード内でアプリケーションのアクセス違反が発生する。

パレット化テクスチャで使用するパレットは、色データのみ使用する必要はない。場合によっては、デバイスが、アルファ情報を含むテクスチャ パレットをサポートしていることもある。その場合、DirectDraw7,GetCaps メソッドを呼び出すと、DirectDraw は DDPCAPS_ALPHA パレット能力フラグを公開する。このフラグは、関連する DDCAPS 型の lPalCaps メンバにある。レンダリング デバイスでアルファ対応パレット化テクスチャからのテクスチャ処理を実行できる場合、Direct3DDevice7.GetCaps を呼び出すと、このレンダリング デバイスは D3DPTEXTURECAPS_ALPHAPALETTE 機能を公開する (D3DPTEXTURECAPS_ALPHAPALETTE フラグは、この呼び出しで渡す D3DDEVICEDESC7 型に含まれる 2 つの D3DPRIMCAPS 型にある)。