Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Legacy Formats: Map Direct3D 9 Formats to Direct3D 10

This table lists the Direct3D 9 formats that can be mapped to a Direct3D 10 format. The Direct3D 10 formats have diverged from the Direct3D 9 formats so that vertex and texture formats can be merged to enable cross-endian applications.

Direct3D 9 Texture/Vertex/Index FormatEquivalent Direct3D 10 Format
D3DFMT_UNKNOWNDXGI_FORMAT_UNKNOWN
D3DFMT_R8G8B8Not available
D3DFMT_A8R8G8B8DXGI_FORMAT_B8G8R8A8_UNORM (DXGI 1.1)
D3DFMT_X8R8G8B8DXGI_FORMAT_B8G8R8X8_UNORM (DXGI 1.1)
D3DFMT_R5G6B5DXGI_FORMAT_B5G6R5_UNORM (DXGI 1.2)
D3DFMT_X1R5G5B5Not available
D3DFMT_A1R5G5B5DXGI_FORMAT_B5G5R5A1_UNORM (DXGI 1.2)
D3DFMT_A4R4G4B4DXGI_FORMAT_B4G4R4A4_UNORM (DXGI 1.2)
D3DFMT_R3G3B2Not available
D3DFMT_A8DXGI_FORMAT_A8_UNORM
D3DFMT_A8R3G3B2Not available
D3DFMT_X4R4G4B4Not available
D3DFMT_A2B10G10R10DXGI_FORMAT_R10G10B10A2
D3DFMT_A8B8G8R8DXGI_FORMAT_R8G8B8A8_UNORM or DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
D3DFMT_X8B8G8R8Not available
D3DFMT_G16R16DXGI_FORMAT_R16G16_UNORM
D3DFMT_A2R10G10B10Not available
D3DFMT_A16B16G16R16DXGI_FORMAT_R16G16B16A16_UNORM
D3DFMT_A8P8Not available
D3DFMT_P8Not available
D3DFMT_L8DXGI_FORMAT_R8_UNORM 1
D3DFMT_A8L8Not available
D3DFMT_A4L4Not available
D3DFMT_V8U8DXGI_FORMAT_R8G8_SNORM
D3DFMT_L6V5U5Not available
D3DFMT_X8L8V8U8Not available
D3DFMT_Q8W8V8U8DXGI_FORMAT_R8G8B8A8_SNORM
D3DFMT_V16U16DXGI_FORMAT_R16G16_SNORM
D3DFMT_W11V11U10 Not available
D3DFMT_A2W10V10U10Not available
D3DFMT_UYVYNot available
D3DFMT_R8G8_B8G8DXGI_FORMAT_G8R8_G8B8_UNORM 2
D3DFMT_YUY2Not available
D3DFMT_G8R8_G8B8DXGI_FORMAT_R8G8_B8G8_UNORM 2
D3DFMT_DXT1DXGI_FORMAT_BC1_UNORM or DXGI_FORMAT_BC1_UNORM_SRGB
D3DFMT_DXT2DXGI_FORMAT_BC2_UNORM or DXGI_FORMAT_BC2_UNORM_SRGB 3
D3DFMT_DXT3DXGI_FORMAT_BC2_UNORM or DXGI_FORMAT_BC2_UNORM_SRGB
D3DFMT_DXT4DXGI_FORMAT_BC3_UNORM or DXGI_FORMAT_BC3_UNORM_SRGB 3
D3DFMT_DXT5DXGI_FORMAT_BC3_UNORM or DXGI_FORMAT_BC3_UNORM_SRGB
D3DFMT_D16 and D3DFMT_D16_LOCKABLEDXGI_FORMAT_D16_UNORM
D3DFMT_D32Not available
D3DFMT_D15S1Not available
D3DFMT_D24S8Not available
D3DFMT_D24X8Not available
D3DFMT_D24X4S4Not available
D3DFMT_D16DXGI_FORMAT_D16_UNORM
D3DFMT_D32F_LOCKABLEDXGI_FORMAT_D32_FLOAT
D3DFMT_D24FS8Not available
D3DFMT_S1D15Not available
D3DFMT_S8D24DXGI_FORMAT_D24_UNORM_S8_UINT
D3DFMT_X8D24Not available
D3DFMT_X4S4D24Not available
D3DFMT_L16DXGI_FORMAT_R16_UNORM 1
D3DFMT_INDEX16DXGI_FORMAT_R16_UINT
D3DFMT_INDEX32DXGI_FORMAT_R32_UINT
D3DFMT_Q16W16V16U16DXGI_FORMAT_R16G16B16A16_SNORM
D3DFMT_MULTI2_ARGB8Not available
D3DFMT_R16FDXGI_FORMAT_R16_FLOAT
D3DFMT_G16R16FDXGI_FORMAT_R16G16_FLOAT
D3DFMT_A16B16G16R16FDXGI_FORMAT_R16G16B16A16_FLOAT
D3DFMT_R32FDXGI_FORMAT_R32_FLOAT
D3DFMT_G32R32FDXGI_FORMAT_R32G32_FLOAT
D3DFMT_A32B32G32R32FDXGI_FORMAT_R32G32B32A32_FLOAT
D3DFMT_CxV8U8Not available
D3DDECLTYPE_FLOAT1DXGI_FORMAT_R32_FLOAT
D3DDECLTYPE_FLOAT2DXGI_FORMAT_R32G32_FLOAT
D3DDECLTYPE_FLOAT3DXGI_FORMAT_R32G32B32_FLOAT
D3DDECLTYPE_FLOAT4DXGI_FORMAT_R32G32B32A32_FLOAT
D3DDECLTYPED3DCOLORNot available
D3DDECLTYPE_UBYTE4DXGI_FORMAT_R8G8B8A8_UINT 4
D3DDECLTYPE_SHORT2DXGI_FORMAT_R16G16_SINT
D3DDECLTYPE_SHORT4DXGI_FORMAT_R16G16B16A16_SINT
D3DDECLTYPE_UBYTE4NDXGI_FORMAT_R8G8B8A8_UNORM
D3DDECLTYPE_SHORT2NDXGI_FORMAT_R16G16_SNORM
D3DDECLTYPE_SHORT4NDXGI_FORMAT_R16G16B16A16_SNORM
D3DDECLTYPE_USHORT2NDXGI_FORMAT_R16G16_UNORM
D3DDECLTYPE_USHORT4NDXGI_FORMAT_R16G16B16A16_UNORM
D3DDECLTYPE_UDEC3Not available
D3DDECLTYPE_DEC3NNot available
D3DDECLTYPE_FLOAT16_2DXGI_FORMAT_R16G16_FLOAT
D3DDECLTYPE_FLOAT16_4DXGI_FORMAT_R16G16B16A16_FLOAT

 

  1. Use .r swizzle in a shader to duplicate red to other components to get Direct3D 9 behavior.
  2. In Direct3D 9, the data was scaled up by 255.0f which can be done in shader code instead.
  3. DXT2 and DXT3 are the same from an API perspective; DXT4 and DXT5 are the same from an API perspective. The only difference was premultiplied alpha, which can be tracked by an application and does not need a separate format.
  4. A shader gets UINT values, but if Direct3D 9 style integral floats (0.0f, 1.0f... 255.f) are needed, UINT can be converted to float32 in a shader.

Related topics

Resources (Direct3D 10)

 

 

Community Additions

Show:
© 2014 Microsoft