Microsoft DirectX 8.0 (C++) |
さまざまな種類のサーフェス フォーマットを定義する。
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_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_W11V11U10 = 65, D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'), D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'), 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_D16 = 80, D3DFMT_D24X8 = 77, D3DFMT_D24X4S4 = 79, D3DFMT_VERTEXDATA = 100, D3DFMT_INDEX16 = 101, D3DFMT_INDEX32 = 102, D3DFMT_FORCE_DWORD = 0xFFFFFFFF } D3DFORMAT;
レンダリング ターゲット フォーマットはD3DFMT_X1R5G5B5、D3DFMT_R5G6B5、D3DFMT_X8R8G8B8、および D3DFMT_A8R8G8B8 に制限されていることに注意すること。
ビット オーダーは、最上位ビット (MSB) が先頭である。したがって、D3DFMT_A8L8 は、この 2 バイト フォーマットの上位バイトがアルファであることを示している。D3DFMT_D16 は、16 ビットの整数値で、アプリケーションでロック可能なサーフェスを示す。
D3DFMT_D16_LOCKABLEを除くすべての深度ステンシル フォーマットは、ピクセル単位に特定のビット オーダーを指定せず、アプリケーションでロックできないので、ドライバは深度チャネルで指定されたビット数より多くのビットを使用できる (ただし、ステンシル チャネルでは使用できない)。
ピクセル フォーマットは、不透明 DWORD 識別子によって示される。このような DWORD のフォーマットが選択されているのは、IHV で定義されている拡張フォーマットの表現を可能にし、確立されている FOURCC 方式を取り入れるためである。Microsoft® Direct3D® ランタイムが認識するフォーマット群は、D3DFORMAT で定義されている。
IHV で提供されるフォーマットおよび多くの FOURCC コードは、D3DFORMAT 列挙型の一覧には示されていないことに注意する必要がある。この列挙型のフォーマットは、ランタイムによって認められている点がほかのフォーマットと異なる。つまり、リファレンス ラスタライザは、これらの型のすべてで動作する。IHV 提供のフォーマットは、カード単位に個々の IHV によってサポートされる。
ヘッダー : D3d8types.h で宣言。