DXGI_FORMAT Enumeration
This topic describes the enumeration types used to specify the format of resources.
typedef enum DXGI_FORMAT {
DXGI_FORMAT_UNKNOWN = 0,
DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
DXGI_FORMAT_R32G32B32A32_UINT = 3,
DXGI_FORMAT_R32G32B32A32_SINT = 4,
DXGI_FORMAT_R32G32B32_TYPELESS = 5,
DXGI_FORMAT_R32G32B32_FLOAT = 6,
DXGI_FORMAT_R32G32B32_UINT = 7,
DXGI_FORMAT_R32G32B32_SINT = 8,
DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
DXGI_FORMAT_R16G16B16A16_UNORM = 11,
DXGI_FORMAT_R16G16B16A16_UINT = 12,
DXGI_FORMAT_R16G16B16A16_SNORM = 13,
DXGI_FORMAT_R16G16B16A16_SINT = 14,
DXGI_FORMAT_R32G32_TYPELESS = 15,
DXGI_FORMAT_R32G32_FLOAT = 16,
DXGI_FORMAT_R32G32_UINT = 17,
DXGI_FORMAT_R32G32_SINT = 18,
DXGI_FORMAT_R16G16_TYPELESS = 19,
DXGI_FORMAT_R16G16_FLOAT = 20,
DXGI_FORMAT_R16G16_UNORM = 21,
DXGI_FORMAT_R16G16_UINT = 22,
DXGI_FORMAT_R16G16_SNORM = 23,
DXGI_FORMAT_R16G16_SINT = 24,
DXGI_FORMAT_R32_TYPELESS = 25,
DXGI_FORMAT_R32_FLOAT = 26,
DXGI_FORMAT_R32_HFLOAT = 27,
DXGI_FORMAT_R32_UINT = 28,
DXGI_FORMAT_R32_SINT = 29,
DXGI_FORMAT_R8G8B8A8_TYPELESS = 30,
DXGI_FORMAT_R8G8B8A8_UNORM = 31,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 32,
DXGI_FORMAT_R8G8B8A8_UINT = 33,
DXGI_FORMAT_R8G8B8A8_SNORM = 34,
DXGI_FORMAT_R8G8B8A8_SINT = 35,
DXGI_FORMAT_R16G16B16_TYPELESS = 36,
DXGI_FORMAT_R16G16B16_FLOAT = 37,
DXGI_FORMAT_R16G16B16_UNORM = 38,
DXGI_FORMAT_R16G16B16_UINT = 39,
DXGI_FORMAT_R16G16B16_SNORM = 40,
DXGI_FORMAT_R16G16B16_SINT = 41,
DXGI_FORMAT_R8G8B8_TYPELESS = 42,
DXGI_FORMAT_R8G8B8_UNORM = 43,
DXGI_FORMAT_R8G8B8_UNORM_SRGB = 44,
DXGI_FORMAT_R8G8B8_UINT = 45,
DXGI_FORMAT_R8G8B8_SNORM = 46,
DXGI_FORMAT_R8G8B8_SINT = 47,
DXGI_FORMAT_R16_TYPELESS = 48,
DXGI_FORMAT_R16_FLOAT = 49,
DXGI_FORMAT_R16_UNORM = 50,
DXGI_FORMAT_R16_UINT = 51,
DXGI_FORMAT_R16_SNORM = 52,
DXGI_FORMAT_R16_SINT = 53,
DXGI_FORMAT_R8_TYPELESS = 54,
DXGI_FORMAT_R8_UNORM = 55,
DXGI_FORMAT_R8_UINT = 56,
DXGI_FORMAT_R8_SNORM = 57,
DXGI_FORMAT_R8_SINT = 58,
DXGI_FORMAT_R8G8_TYPELESS = 59,
DXGI_FORMAT_R8G8_UNORM = 60,
DXGI_FORMAT_R8G8_UINT = 61,
DXGI_FORMAT_R8G8_SNORM = 62,
DXGI_FORMAT_R8G8_SINT = 63,
DXGI_FORMAT_R16_EAC_UNORM = 64,
DXGI_FORMAT_R16_EAC_SNORM = 65,
DXGI_FORMAT_R8_ETC2_UNORM = 66,
DXGI_FORMAT_R8_ETC2_EAC_UNORM = 67,
DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
DXGI_FORMAT_G8R8_B8G8_UNORM = 69,
DXGI_FORMAT_B8G8R8A8_UNORM = 70,
DXGI_FORMAT_B8G8R8X8_UNORM = 71,
DXGI_FORMAT_R10G10B10A2_TYPELESS = 72,
DXGI_FORMAT_R10G10B10A2_UNORM = 73,
DXGI_FORMAT_R10G10B10A2_UINT = 74,
DXGI_FORMAT_E5B9G9R9_SHAREDEXP = 75,
DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 76,
DXGI_FORMAT_R8G8B8_SNORM = 77,
DXGI_FORMAT_R8G8B8_UINT = 78,
DXGI_FORMAT_R8G8B8_UNORM_SRGB = 79,
DXGI_FORMAT_R8G8B8_UNORM = 80,
DXGI_FORMAT_R8G8B8_TYPELESS = 81,
DXGI_FORMAT_R16G16B16_SINT = 82,
DXGI_FORMAT_R16G16B16_SNORM = 83,
DXGI_FORMAT_R16G16B16_UINT = 84,
DXGI_FORMAT_R16G16B16_UNORM = 85,
DXGI_FORMAT_R16G16B16_FLOAT = 86,
DXGI_FORMAT_R16G16B16_TYPELESS = 87,
DXGI_FORMAT_R8G8B8A8_SINT = 88,
DXGI_FORMAT_R8G8B8A8_SNORM = 89,
DXGI_FORMAT_R8G8B8A8_UINT = 90,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 91,
DXGI_FORMAT_R8G8B8A8_UNORM = 92,
DXGI_FORMAT_R8G8B8A8_TYPELESS = 93,
DXGI_FORMAT_R32_SINT = 94,
DXGI_FORMAT_R32_UINT = 95,
DXGI_FORMAT_R32_HFLOAT = 96,
DXGI_FORMAT_R32_FLOAT = 97,
DXGI_FORMAT_R32_TYPELESS = 98,
DXGI_FORMAT_R16G16_SINT = 99,
DXGI_FORMAT_R16G16_SNORM = 100,
DXGI_FORMAT_R16G16_UINT = 101,
DXGI_FORMAT_R16G16_UNORM = 102,
DXGI_FORMAT_R16G16_FLOAT = 103,
DXGI_FORMAT_R16G16_TYPELESS = 104,
DXGI_FORMAT_R32G32_SINT = 105,
DXGI_FORMAT_R32G32_UINT = 106,
DXGI_FORMAT_R32G32_FLOAT = 107,
DXGI_FORMAT_R32G32_TYPELESS = 108,
DXGI_FORMAT_R16G16B16A16_SINT = 109,
DXGI_FORMAT_R16G16B16A16_SNORM = 110,
DXGI_FORMAT_R16G16B16A16_UINT = 111,
DXGI_FORMAT_R16G16B16A16_UNORM = 112,
DXGI_FORMAT_R16G16B16A16_FLOAT = 113,
DXGI_FORMAT_R16G16B16A16_TYPELESS = 114,
DXGI_FORMAT_R32G32B32_SINT = 115,
DXGI_FORMAT_R32G32B32_UINT = 116,
DXGI_FORMAT_R32G32B32_FLOAT = 117,
DXGI_FORMAT_R32G32B32_TYPELESS = 118,
DXGI_FORMAT_R32G32B32A32_SINT = 119,
DXGI_FORMAT_R32G32B32A32_UINT = 120,
DXGI_FORMAT_R32G32B32A32_FLOAT = 121,
DXGI_FORMAT_R32G32B32A32_TYPELESS = 122,
DXGI_FORMAT_MAX_ENUM = 123
} DXGI_FORMAT;
Remarks
DXGI format enumeration specifies the format of resources. These formats are used to define the layout and interpretation of data within textures, render targets, and other graphics resources.
The formats can be broadly categorized as follows:
- Typeless Formats: These formats can be interpreted as different specific formats (e.g., FLOAT, UINT, SINT) at runtime. This allows for flexibility in resource creation and usage.
- Float Formats: These store floating-point values. They can be normalized (UNORM) or non-normalized.
- Unsigned Integer (UINT) Formats: These store unsigned integer values.
- Signed Integer (SINT) Formats: These store signed integer values.
- Normalized Formats (UNORM, SNORM): These represent values in the range [0, 1] (UNORM) or [-1, 1] (SNORM) that are mapped from their integer representations.
- SRGB Formats: These are gamma-corrected versions of formats, typically used for color data displayed on screens.
- Packed Formats: These formats store multiple components (like R, G, B, A) within a single, often smaller, data type. Examples include R8G8B8A8 and R10G10B10A2.
- Specialized Formats: Formats like E5B9G9R9_SHAREDEXP are used for high dynamic range rendering.
When creating a resource, you specify a DXGI_FORMAT
. The choice of format impacts memory usage, precision, and performance. Always refer to the specific requirements of the API function or feature you are using to determine the appropriate format.
The DXGI_FORMAT_UNKNOWN
value is a placeholder and should not be used for actual resource creation.
The DXGI_FORMAT_MAX_ENUM
value indicates the maximum possible value in the enumeration and can be useful for iterating through formats or determining array sizes.