D3DFORMAT

さまざまなタイプのサーフェス フォーマットを定義します。

構文

 typedef enum _D3DFORMAT { ...  (values)  } D3DFORMAT; 

以下のようなタイプのフォーマットがあります。

  • バックバッファー フォーマットまたはディスプレイ フォーマット
  • バッファー フォーマット
  • DXTn 圧縮テクスチャー フォーマット
  • 浮動小数点フォーマット
  • FOURCC フォーマット
  • IEEE フォーマット
  • ミックス フォーマット
  • 符号付きフォーマット
  • 符号なしフォーマット
  • その他
  • 定数情報

すべてのフォーマットが、左から右に、最上位ビットから最下位ビットの順に示されます。たとえば、D3DFORMAT_ARGB は、最上位ビットのチャンネル A (アルファ) から最下位ビットのチャンネル B (青) の順になっています。サーフェス データをトラバースする際、データは最下位ビットから最上位ビットの順でメモリーに格納されます。つまり、メモリー内のチャンネルの順序は、最下位ビット (青) から最上位ビット (アルファ) の順になります。

未定義のチャンネル (G16R16、A8 など) を含むフォーマットの既定値は 1 です。唯一の例外は A8 フォーマットで、このフォーマットは 3 つのカラー チャンネルについて 000 に初期化されます。

ビットの順序は最上位バイトが先頭になります。したがって D3DFMT_A8L8 は、この 2 バイト フォーマットの上位バイトがアルファであることを示します。D3DFMT_D16 は、16 ビットの整数値で、アプリケーションでロック可能なサーフェスであることを示しています。

ピクセル フォーマットが選択されているのは、確立されている FOURCC 方式を取り入れるだけでなく、ハードウェアベンダーが定義する拡張フォーマットの表現も可能にするためです。Direct3D ランタイムによって認識される一連のフォーマットは、D3DFORMAT によって定義されています。

一連のフォーマットは独立系ハードウェア ベンダー (IHV) によって提供されており、多くの FOURCC コードはリストに含まれていない点に注意してください。この列挙型のフォーマットは、ランタイムによって認可されている点で、他のフォーマットとは異なっています。つまり、リファレンス ラスタライザーは、これらのすべてのタイプに対して動作します。IHV によって提供されるフォーマットは、カードごとに個々の IHV によってサポートされます。

バックバッファー フォーマットまたはディスプレイ フォーマット

これらのフォーマットは、バック バッファーまたはディスプレイに対してのみ有効です。

フォーマット バック バッファー ディスプレイ
A2R10G10B10 x x (全画面モードのみ)
A8R8G8B8 x
X8R8G8B8 x x
A1R5G5B5 x
X1R5G5B5 x x
R5G6B5 x x

バッファー フォーマット

深度バッファー、ステンシル バッファー、頂点バッファー、およびインデックス バッファーは、それぞれ独自のフォーマットを持ちます。

バッファー フラグ フォーマット
D3DFMT_D16_LOCKABLE 70 16 ビットの Z バッファーです。
D3DFMT_D32 71 32 ビットの Z バッファーです。
D3DFMT_D15S1 73 16 ビットの Z バッファーで、深度チャンネルに 15 ビット、ステンシル チャンネルに 1 ビットが予約されています。
D3DFMT_D24S8 75 32 ビットの Z バッファーで、深度チャンネルに 24 ビット、ステンシル チャンネルに 8 ビットを使用します。
D3DFMT_D24X8 77 32 ビットの Z バッファーで、深度チャンネルに 24 ビットを使用します。
D3DFMT_D24X4S4 79 32 ビットの Z バッファーで、深度チャンネルに 24 ビット、ステンシル チャンネルに 4 ビットを使用します。
D3DFMT_D32F_LOCKABLE 82 ロック可能なフォーマットであり、深度値は標準の IEEE 浮動小数点数として表されます。
D3DFMT_D24FS8 83 ロックできないフォーマットであり、24 ビットの深度 (24 ビット浮動小数点フォーマット - 20e4) と 8 ビットのステンシルから構成されます。
D3DFMT_D32_LOCKABLE 84 ロック可能な 32 ビットの深度バッファーです。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
D3DFMT_S8_LOCKABLE 84 ロック可能な 8 ビットのステンシル バッファーです。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
D3DFMT_D16 80 16 ビットの Z バッファーです。
D3DFMT_VERTEXDATA 100 頂点バッファー サーフェスを記述します。
D3DFMT_INDEX16 101 16 ビットのインデックス バッファー ビット深度です。
D3DFMT_INDEX32 102 32 ビットのインデックス バッファー ビット深度です。

すべての深度/ステンシル フォーマット (D3DFMT_D16_LOCKABLE を除く) は、ピクセル単位に特定のビット オーダーを指定しません。また、ドライバーは深度チャンネルで指定されたビット数より多くのビットを使用できます (ただし、ステンシル チャンネルではそのようなことはできません)。

DXTn 圧縮テクスチャー フォーマット

以下のフラグは、圧縮テクスチャーに使用されます。

DXTn 圧縮テクスチャー フラグ フォーマット
D3DFMT_DXT1 MAKEFOURCC('D', 'X', 'T', '1') DXT1 圧縮テクスチャー フォーマットです。
D3DFMT_DXT2 MAKEFOURCC('D', 'X', 'T', '2') DXT2 圧縮テクスチャー フォーマットです。
D3DFMT_DXT3 MAKEFOURCC('D', 'X', 'T', '3') DXT3 圧縮テクスチャー フォーマットです。
D3DFMT_DXT4 MAKEFOURCC('D', 'X', 'T', '4') DXT4 圧縮テクスチャー フォーマットです。
D3DFMT_DXT5 MAKEFOURCC('D', 'X', 'T', '5') DXT5 圧縮テクスチャー フォーマットです。

サーフェスのディメンジョンが 4 の倍数でない限り、ランタイムは、アプリケーションによる DXTn フォーマットを使用したサーフェスの作成を許可しません。これは、オフスクリーン プレーン サーフェス、レンダリング ターゲット、2D テクスチャ、キューブ テクスチャ、およびボリューム テクスチャにも当てはまります。

浮動小数点フォーマット

以下のフラグは、浮動小数点サーフェス フォーマットに使用されます。1 チャンネルあたり 16 ビットを使うこれらのフォーマットは、s10e5 フォーマットとも呼ばれます。

浮動小数点フラグ フォーマット
D3DFMT_R16F 111 16 ビットの浮動小数点フォーマットで、赤のチャンネルに 16 ビットを使用します。
D3DFMT_G16R16F 112 32 ビットの浮動小数点フォーマットで、赤のチャンネルに 16 ビット、緑のチャンネルに 16 ビットを使用します。
D3DFMT_A16B16G16R16F 113 64 ビットの浮動小数点フォーマットで、各チャンネル (アルファ、青、緑、赤) に 16 ビットを使用します。

FOURCC フォーマット

FOURCC フォーマットのデータは、圧縮データです。

MAKEFOURCC

4 文字コードを生成するマクロです。

 #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              ¥                 ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   ¥                 ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) 

定義されている FOURCC フォーマットを以下に示します。

FOURCC フラグ フォーマット
D3DFMT_MULTI2_ARGB8 MAKEFOURCC('M','E','T','1') マルチエレメント テクスチャー (圧縮なし)
D3DFMT_G8R8_G8B8 MAKEFOURCC('G', 'R', 'G', 'B') YUY2 (Y0U0、Y1V0、Y2U2 など) と類似の 16 ビットにパックされた RGB フォーマットです。カラー値を正しく表すために、ピクセルのペアを必要とします。ペアの 1 つ目のピクセルには、緑の 8 ビット (上位 8 ビット) と赤の 8 ビット (下位 8 ビット) が含まれます。2 つ目のピクセルには、緑の 8 ビット (上位 8 ビット) と青の 8 ビット (下位 8 ビット) が含まれます。全体として、2 つのピクセルは赤と青の成分を共有する一方で、それぞれが固有の緑成分を持ちます (G0R0、G1B0、G2R2 など)。テクスチャー サンプラーは、ピクセル シェーダー内を参照するときにカラーを正規化しません。カラーは 0.0f から 255.0f の範囲のままになります。これは、プログラム可能なすべてのピクセル シェーダー モデルに当てはまります。固定機能ピクセル シェーダーの場合は、ハードウェアで 0.f ~ 1.f の範囲に正規化する必要があり、基本的に YUY2 テクスチャーとして処理する必要があります。このフォーマットを公開するハードウェアは、D3DCAPS9 の PixelShader1xMaxValue メンバーが、その範囲を処理できる値に設定されていなければなりません。
D3DFMT_R8G8_B8G8 MAKEFOURCC('R', 'G', 'B', 'G') UYVY (U0Y0、V0Y1、U2Y2 など) と類似の 16 ビットにパックされた RGB フォーマットです。カラー値を正しく表すために、ピクセルのペアを必要とします。ペアの 1 つ目のピクセルには、緑の 8 ビット (下位 8 ビット) と赤の 8 ビット (上位 8 ビット) が含まれます。2 つ目のピクセルには、緑の 8 ビット (下位 8 ビット) と青の 8 ビット (上位 8 ビット) が含まれます。全体として、2 つのピクセルは赤と青の成分を共有する一方で、それぞれが固有の緑成分を持ちます (R0G0、B0G1、R2G2 など)。テクスチャー サンプラーは、ピクセル シェーダー内を参照するときにカラーを正規化しません。カラーは 0.0f から 255.0f の範囲のままになります。これは、プログラム可能なすべてのピクセル シェーダー モデルに当てはまります。固定機能ピクセル シェーダーの場合は、ハードウェアで 0.f ~ 1.f の範囲に正規化する必要があり、基本的に YUY2 テクスチャーとして処理する必要があります。このフォーマットを公開するハードウェアは、D3DCAPS9 の PixelShader1xMaxValue メンバーが、その範囲を処理できる値に設定されていなければなりません。
D3DFMT_UYVY MAKEFOURCC('U', 'Y', 'V', 'Y') UYVY フォーマットです (PC98 準拠)。
D3DFMT_YUY2 MAKEFOURCC('Y', 'U', 'Y', '2') YUY2 フォーマットです (PC98 準拠)。

IEEE フォーマット

以下のフラグは、浮動小数点サーフェス フォーマットに使用されます。1 チャンネルあたり 32 ビットを使うこれらのフォーマットは、s23e8 フォーマットとも呼ばれます。

浮動小数点フラグ フォーマット
D3DFMT_R32F 114 32 ビットの浮動小数点フォーマットで、赤のチャンネルに 32 ビットを使用します。
D3DFMT_G32R32F 115 64 ビットの浮動小数点フォーマットで、赤のチャンネルに 32 ビット、緑のチャンネルに 32 ビットを使用します。
D3DFMT_A32B32G32R32F 116 128 ビットの浮動小数点フォーマットで、各チャンネル (アルファ、青、緑、赤) に 32 ビットを使用します。

ミックス フォーマット

ミックス フォーマットのデータには、符号なしデータと符号付きデータを組み合わせて格納できます。

ミックス フォーマット フラグ フォーマット
D3DFMT_L6V5U5 61 輝度付きの 16 ビット バンプマップ フォーマットで、輝度に 6 ビット、v と u にそれぞれ 5 ビットを使用します。
D3DFMT_X8L8V8U8 62 輝度付きの 32 ビット バンプマップ フォーマットで、各チャンネルに 8 ビットを使用します。
D3DFMT_A2W10V10U10 67 32 ビット バンプマップ フォーマットで、アルファに 2 ビット、w、v、u にそれぞれ 10 ビットを使用します。

符号付きフォーマット

符号付きフォーマットのデータは、正でも負でもかまいません。符号付きフォーマットでは、(U)、(V)、(W)、および (Q) のデータを組み合わせて使用します。

符号付きフォーマット フラグ フォーマット
D3DFMT_V8U8 60 16 ビット バンプマップ フォーマットで、u データと v データにそれぞれ 8 ビットを使用します。
D3DFMT_Q8W8V8U8 63 32 ビット バンプマップ フォーマットで、各チャンネルに 8 ビットを使用します。
D3DFMT_V16U16 64 32 ビット バンプマップ フォーマットで、各チャンネルに 16 ビットを使用します。
D3DFMT_Q16W16V16U16 110 64 ビット バンプマップ フォーマットで、各成分に 16 ビットを使用します。
D3DFMT_CxV8U8 117 16 ビットの通常圧縮フォーマット。テクスチャ サンプラは次のように C チャンネルを計算します。C = sqrt(1 - U2 - V2)

符号なしフォーマット

符号なしフォーマットのデータは、正でなければなりません。符号なしフォーマットでは、赤 (R)、緑 (G)、青 (B)、アルファ (A)、輝度 (L)、パレット (P) のデータを組み合わせて使用します。パレット データは、カラー パレットのインデックス作成に使用されるので、カラー インデックス データとも呼ばれます。

符号付きフォーマット フラグ フォーマット
D3DFMT_R8G8B8 20 24 ビット RGB ピクセル フォーマットで、チャンネルごとに 8 ビットを使用します。
D3DFMT_A8R8G8B8 21 アルファ付きの 32 ビット ARGB ピクセル フォーマットで、チャンネルごとに 8 ビットを使用します。
D3DFMT_X8R8G8B8 22 32 ビットの RGB ピクセル フォーマットで、そのうち 8 ビットは各カラー用に確保されています。
D3DFMT_R5G6B5 23 16 ビット RGB ピクセル フォーマットで、赤に 5 ビット、緑に 6 ビット、青に 5 ビットを使用します。
D3DFMT_X1R5G5B5 24 16 ビットのピクセル フォーマットで、そのうち 5 ビットはそれぞれのカラーのために確保されています。
D3DFMT_A1R5G5B5 25 16 ビットのピクセル フォーマットで、RGBの各カラー用に 5 ビットが、アルファ 用に 1 ビットがそれぞれ確保されています。
D3DFMT_A4R4G4B4 26 16 ビット ARGB ピクセル フォーマットで、各チャンネルに 4 ビットを使用します。
D3DFMT_R3G3B2 27 8 ビット RGB テクスチャー フォーマットで、赤に 3 ビット、緑に 3 ビット、青に 2 ビットを使用します。
D3DFMT_A8 28 8 ビット アルファのみです。
D3DFMT_A8R3G3B2 29 16 ビット ARGB テクスチャー フォーマットで、アルファに 8 ビット、赤と緑にそれぞれ 3 ビット、青に 2 ビットを使用します。
D3DFMT_X4R4G4B4 30 16 ビット RGB ピクセル フォーマットで、各カラーに 4 ビットを使用します。
D3DFMT_A2B10G10R10 31 32 ビットのピクセル フォーマットで、各色にそれぞれ 10 ビット、アルファに 2 ビットを使用します。
D3DFMT_A8B8G8R8 32 アルファ付きの 32 ビット ARGB ピクセル フォーマットで、チャンネルごとに 8 ビットを使用します。
D3DFMT_X8B8G8R8 33 32 ビットの RGB ピクセル フォーマットで、そのうち 8 ビットは各カラー用に確保されています。
D3DFMT_G16R16 34 32 ビットのピクセル フォーマットで、緑と赤にそれぞれ 16 ビットを使用します。
D3DFMT_A2R10G10B10 35 32 ビットのピクセル フォーマットで、赤、緑、青にそれぞれ 10 ビット、アルファに 2 ビットを使用します。
D3DFMT_A16B16G16R16 36 64 ビットのピクセル フォーマットで、各成分に 16 ビットを使用します。
D3DFMT_A8P8 40 8 ビットのアルファが付いた 8 ビットのカラー インデックス データです。
D3DFMT_P8 41 8 ビットのカラー インデックス データです。
D3DFMT_L8 50 8 ビット輝度のみです。
D3DFMT_L16 81 16 ビット輝度のみです。
D3DFMT_A8L8 51 16 ビットで、アルファと輝度にそれぞれ 8 ビットを使用します。
D3DFMT_A4L4 52 8 ビットで、アルファと輝度にそれぞれ 4 ビットを使用します。
D3DFMT_A1 118 1 ビットのモノクロ データです。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
D3DFMT_BINARYBUFFER 199 データが固有のタイプを持たないことを示すバイナリ フォーマットです。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。

その他

このフラグは、未定義のフォーマットに使用されます。

その他のフラグ フォーマット
D3DFMT_UNKNOWN 0 不明なサーフェス フォーマットです。

定数情報

ヘッダー d3d9types.h
最低限必要なオペレーティング システム Windows 98

要件

ヘッダー: D3D9Types.h 宣言