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 宣言