D3DFORMAT

さまざまな種類のサーフェス形式を定義します。

typedef enum _D3DFORMAT {
    D3DFMT_UNKNOWN              =  0,

    D3DFMT_R8G8B8               = 20,
    D3DFMT_A8R8G8B8             = 21,
    D3DFMT_X8R8G8B8             = 22,
    D3DFMT_R5G6B5               = 23,
    D3DFMT_X1R5G5B5             = 24,
    D3DFMT_A1R5G5B5             = 25,
    D3DFMT_A4R4G4B4             = 26,
    D3DFMT_R3G3B2               = 27,
    D3DFMT_A8                   = 28,
    D3DFMT_A8R3G3B2             = 29,
    D3DFMT_X4R4G4B4             = 30,
    D3DFMT_A2B10G10R10          = 31,
    D3DFMT_A8B8G8R8             = 32,
    D3DFMT_X8B8G8R8             = 33,
    D3DFMT_G16R16               = 34,
    D3DFMT_A2R10G10B10          = 35,
    D3DFMT_A16B16G16R16         = 36,

    D3DFMT_A8P8                 = 40,
    D3DFMT_P8                   = 41,

    D3DFMT_L8                   = 50,
    D3DFMT_A8L8                 = 51,
    D3DFMT_A4L4                 = 52,

    D3DFMT_V8U8                 = 60,
    D3DFMT_L6V5U5               = 61,
    D3DFMT_X8L8V8U8             = 62,
    D3DFMT_Q8W8V8U8             = 63,
    D3DFMT_V16U16               = 64,
    D3DFMT_A2W10V10U10          = 67,

    D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
    D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
    D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
    D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
    D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
    D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
    D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
    D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
    D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),

    D3DFMT_D16_LOCKABLE         = 70,
    D3DFMT_D32                  = 71,
    D3DFMT_D15S1                = 73,
    D3DFMT_D24S8                = 75,
    D3DFMT_D24X8                = 77,
    D3DFMT_D24X4S4              = 79,
    D3DFMT_D16                  = 80,

    D3DFMT_D32F_LOCKABLE        = 82,
    D3DFMT_D24FS8               = 83,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_D32_LOCKABLE         = 84,
    D3DFMT_S8_LOCKABLE          = 85,
#endif // !D3D_DISABLE_9EX

    D3DFMT_L16                  = 81,

    D3DFMT_VERTEXDATA           =100,
    D3DFMT_INDEX16              =101,
    D3DFMT_INDEX32              =102,

    D3DFMT_Q16W16V16U16         =110,

    D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),

    D3DFMT_R16F                 = 111,
    D3DFMT_G16R16F              = 112,
    D3DFMT_A16B16G16R16F        = 113,

    D3DFMT_R32F                 = 114,
    D3DFMT_G32R32F              = 115,
    D3DFMT_A32B32G32R32F        = 116,

    D3DFMT_CxV8U8               = 117,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_A1                   = 118,
    D3DFMT_A2B10G10R10_XR_BIAS  = 119,
    D3DFMT_BINARYBUFFER         = 199,
#endif // !D3D_DISABLE_9EX

    D3DFMT_FORCE_DWORD          =0x7fffffff
} D3DFORMAT;

注釈

いくつかの種類の形式があります。

すべての形式は、左から右、最上位ビット、最下位ビットに一覧表示されます。 たとえば、 D3DFORMAT_ARGB は最上位ビット チャネル A (アルファ) から最下位ビット チャネル B (青) に順序付けされます。 サーフェス データを走査する場合、データは最下位ビットから最上位ビットにメモリに格納されます。つまり、メモリ内のチャネルの順序は、最下位ビット (青) から最上位ビット (アルファ) になります。

未定義のチャネル (G16R16、A8 など) を含む形式の既定値は 1 です。 唯一の例外は、3 つのカラー チャネルの 000 に初期化される A8 形式です。

ビットの順序は最初に最上位バイトからであるため、D3DFMT_A8L8は、この 2 バイト形式の上位バイトがアルファであることを示します。 D3DFMT_D16 は、16 ビットの整数値とアプリケーションロック可能なサーフェスを示します。

ピクセル形式は、ハードウェア ベンダーが定義した拡張形式の式を有効にし、確立された FOURCC メソッドを含めるために選択されています。 Direct3D ランタイムによって認識される形式のセットは、D3DFORMAT によって定義されます。

形式は独立したハードウェア ベンダー (IHV) によって提供され、多くの FOURCC コードは一覧に記載されていないことに注意してください。 この列挙体の形式は、ランタイムによって承認されるという点で一意です。つまり、参照ラスタライザーはこれらすべての型で動作します。 IHV で提供される形式は、個々の IHV でカードカードベースでサポートされます。

BackBuffer または表示形式

これらの形式は、バック バッファーまたはディスプレイの唯一の有効な形式です。

フォーマット バック バッファー 表示
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 深度チャネル用に 15 ビットが予約され、ステンシル チャネル用に 1 ビットが予約されている 16 ビットの z バッファー ビット深度。
D3DFMT_D24S8 75 深度チャネルに 24 ビット、ステンシル チャネルに 8 ビットを使用する 32 ビットの z バッファー ビット深度。
D3DFMT_D24X8 77 深度チャネルに 24 ビットを使用した 32 ビットの z バッファー ビット深度。
D3DFMT_D24X4S4 79 深度チャネルに 24 ビット、ステンシル チャネルに 4 ビットを使用する 32 ビットの z バッファー ビット深度。
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 85 ロック可能な 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テクスチャ、キューブテクスチャ、ボリュームテクスチャに適用されます。

Floating-Point形式

これらのフラグは、浮動小数点サーフェス形式に使用されます。 これらの 16 ビット/チャネル形式は、s10e5 形式とも呼ばれます。

浮動小数点フラグ 形式
D3DFMT_R16F 111 赤チャネルに 16 ビットを使用する 16 ビットの float 形式。
D3DFMT_G16R16F 112 赤チャネルに 16 ビット、緑チャネルに 16 ビットを使用する 32 ビット浮動小数点形式。
D3DFMT_A16B16G16R16F 113 各チャネルに 16 ビットを使用する 64 ビットの float 形式 (アルファ、青、緑、赤)。

 

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') MultiElement テクスチャ (圧縮されていません)
D3DFMT_G8R8_G8B8 MAKEFOURCC('G', 'R', 'G', 'B') YUY2 (Y0U0、Y1V0、Y2U2 など) に似た 16 ビットパック RGB 形式。 色の値を適切に表すには、ピクセル ペアが必要です。 ペアの最初のピクセルには、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 形式。 色の値を適切に表すには、ピクセル ペアが必要です。 ペアの最初のピクセルには、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 形式

これらのフラグは、浮動小数点サーフェス形式に使用されます。 これらの 32 ビット/チャネル形式は、s23e8 形式とも呼ばれます。

浮動小数点フラグ 形式
D3DFMT_R32F 114 赤チャネルに 32 ビットを使用する 32 ビット浮動小数点形式。
D3DFMT_G32R32F 115 赤チャネルには 32 ビット、緑チャネルの場合は 32 ビットを使用する 64 ビットの float 形式。
D3DFMT_A32B32G32R32F 116 各チャネルに 32 ビットを使用する 128 ビットの float 形式 (アルファ、青、緑、赤)。

 

混合形式

混合形式のデータには、符号なしデータと符号付きデータの組み合わせを含めることができます。

混合形式フラグ 形式
D3DFMT_L6V5U5 61 輝度に 6 ビットを使用し、v と you にそれぞれ 5 ビットを使用する、輝度を持つ 16 ビットのバンプ マップ形式。
D3DFMT_X8L8V8U8 62 各チャネルに 8 ビットを使用した輝度を持つ 32 ビットのバンプ マップ形式。
D3DFMT_A2W10V10U10 67 アルファに 2 ビット、w、v、you にそれぞれ 10 ビットを使用する 32 ビットのバンプ マップ形式。

 

署名付き形式

符号付き形式のデータは、正と負の両方にすることができます。 符号付き形式では、(U)、(V)、(W)、および (Q) データの組み合わせを使用します。

署名付き書式フラグ 形式
D3DFMT_V8U8 60 8 ビットを使用した 16 ビットのバンプ マップ形式。各ビットは、自分と v のデータに対応します。
D3DFMT_Q8W8V8U8 63 チャネルごとに 8 ビットを使用する 32 ビットのバンプ マップ形式。
D3DFMT_V16U16 64 チャネルごとに 16 ビットを使用する 32 ビットのバンプ マップ形式。
D3DFMT_Q16W16V16U16 110 コンポーネントごとに 16 ビットを使用する 64 ビットのバンプ マップ形式。
D3DFMT_CxV8U8 117 16 ビットの通常の圧縮形式。 テクスチャ サンプラーは、C = sqrt(1 - U² - V²) から C チャネルを計算します。

 

符号なし形式

符号なし形式のデータは正である必要があります。 符号なし形式では、(R)ed、(G)reen、(B)lue、(A)lpha、(L)uminance、および (P)alette データの組み合わせを使用します。 データはカラー パレットのインデックス付けに使用されるため、パレット データはカラー インデックス付きデータとも呼ばれます。

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

 

その他

このフラグは、未定義の形式に使用されます。

その他のフラグ 形式
D3DFMT_UNKNOWN 0 サーフェスの形式が不明です

 

要件

要件
ヘッダー
D3D9Types.h

関連項目

Direct3D 列挙