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;
Remarks
Существует несколько типов форматов:
- BackBuffer или форматы отображения
- Форматы буферов
- Форматы сжатых текстур DXTn
- Форматы с плавающей запятой
- Форматы FOURCC
- Форматы IEEE
- Смешанные форматы
- Подписанные форматы
- Форматы без знака
- Другое
Все форматы перечислены слева направо, наиболее значимые и наименее значимые биты. Например, D3DFORMAT_ARGB упорядочены от наиболее значимого битового канала A (альфа) до наименьшего битового канала B (синий). При обходе данных поверхности данные хранятся в памяти от наименьшего бита до наиболее значительного бита, что означает, что порядок канала в памяти — от наименьшего бита (синий) до наиболее значительного бита (альфа).
Значение по умолчанию для форматов, содержащих неопределенные каналы (G16R16, A8 и т. д.), равное 1. Единственным исключением является формат A8, инициализируемый в 000 для трех цветовых каналов.
Порядок битов начинается с самого значительного байта, поэтому 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 | 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 | 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 |
Среда выполнения не позволит приложению создавать поверхность с помощью формата DXTn, если размеры поверхности не кратны 4. Это относится к поверхностям без экрана, целевым объектам отрисовки, двумерным текстурам, текстурам куба и текстурам тома.
Форматы Floating-Point
Эти флаги используются для форматов поверхностей с плавающей запятой. Эти 16-разрядные форматы на канал также называются форматами s10e5.
Флаги с плавающей запятой | Значение | Формат |
---|---|---|
D3DFMT_R16F | 111 | 16-разрядный формат с плавающей запятой с использованием 16 битов для красного канала. |
D3DFMT_G16R16F | 112 | 32-разрядный формат с плавающей запятой с использованием 16 бит для красного канала и 16 битов для зеленого канала. |
D3DFMT_A16B16G16R16F | 113 | 64-разрядный формат с плавающей запятой с использованием 16 бит для каждого канала (альфа, синий, зеленый, красный). |
Форматы FOURCC
Данные в формате FOURCC сжаты.
MAKEFOURCC
Макрос для создания четырехзначных кодов выглядит следующим образом:
#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') | 16-разрядный формат RGB, аналогичный YUY2 (Y0U0, Y1V0, Y2U2 и т. д.). Для правильного представления значения цвета требуется пара пикселей. Первый пиксель в паре содержит 8 бит зеленого (в высоких 8 бит) и 8 битов красного (в низких 8 битах). Второй пиксель содержит 8 бит зеленого (в высоких 8 бит) и 8 битов синего (в низких 8 бит). Вместе два пикселя совместно используют красные и синие компоненты, в то время как каждый из них имеет уникальный зеленый компонент (G0R0, G1B0, G2R2 и т. д.). Пример текстуры не нормализует цвета при поиске в пиксельном шейдере; они остаются в диапазоне от 0,0f до 255,0f. Это справедливо для всех программируемых моделей шейдеров пикселей. Для шейдера текстуры фиксированной функции оборудование должно нормализоваться до диапазона от 0.f до 1.f и, по сути, рассматривать его как текстуру YUY2. Оборудование, предоставляющее этот формат, должно иметь член PixelShader1xMaxValue D3DCAPS9 , который может обрабатывать этот диапазон. |
D3DFMT_R8G8_B8G8 | MAKEFOURCC('R', 'G', 'B', 'G') | 16-разрядный формат RGB, аналогичный UYVY (U0Y0, V0Y1, U2Y2 и т. д.). Для правильного представления значения цвета требуется пара пикселей. Первый пиксель в паре содержит 8 бит зеленого (в низких 8 бит) и 8 битов красного (в высоких 8 бит). Второй пиксель содержит 8 бит зеленого (в низких 8 битах) и 8 битов синего (в высоких 8 бит). Вместе два пикселя совместно используют красные и синие компоненты, в то время как каждый из них имеет уникальный зеленый компонент (R0G0, B0G1, R2G2 и т. д.). Пример текстуры не нормализует цвета при поиске в пиксельном шейдере; они остаются в диапазоне от 0,0f до 255,0f. Это справедливо для всех программируемых моделей шейдеров пикселей. Для шейдера текстуры фиксированной функции оборудование должно нормализоваться до диапазона от 0.f до 1.f и, по сути, рассматривать его как текстуру YUY2. Оборудование, предоставляющее этот формат, должно иметь элемент PixelShader1xMaxValue D3DCAPS9 , который может обрабатывать этот диапазон. |
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 | 64-разрядный формат с плавающей запятой, использующий 32 бита для красного канала и 32 бита для зеленого канала. |
D3DFMT_A32B32G32R32F | 116 | 128-разрядный формат с плавающей запятой, использующий 32 бита для каждого канала (альфа, синий, зеленый, красный). |
Смешанные форматы
Данные в смешанных форматах могут содержать сочетание неподписанных данных и подписанных данных.
Флаги смешанного формата | Значение | Формат |
---|---|---|
D3DFMT_L6V5U5 | 61 | 16-разрядный формат карты бамп-карты с яркостью с использованием 6 битов для яркости, и 5 битов для v и вы. |
D3DFMT_X8L8V8U8 | 62 | 32-разрядный формат карты удара с яркостью с использованием 8 бит для каждого канала. |
D3DFMT_A2W10V10U10 | 67 | 32-разрядный формат карты удара с использованием 2 бита для альфа-и 10 бит каждый для w, v и you. |
Подписанные форматы
Данные в подписанном формате могут быть положительными и отрицательными. В подписанных форматах используются сочетания данных (U), (V), (W) и (Q).
Подписанные флаги формата | Значение | Формат |
---|---|---|
D3DFMT_V8U8 | 60 | 16-разрядный формат карты удара с использованием 8 бит для каждого из них и данных v. |
D3DFMT_Q8W8V8U8 | 63 | 32-разрядный формат карты удара с использованием 8 бит для каждого канала. |
D3DFMT_V16U16 | 64 | 32-разрядный формат карты удара с использованием 16 бит для каждого канала. |
D3DFMT_Q16W16V16U16 | 110 | 64-разрядный формат карты удара с использованием 16 бит для каждого компонента. |
D3DFMT_CxV8U8 | 117 | 16-разрядный обычный формат сжатия. Средство выборки текстур вычисляет канал C из: C = sqrt(1 — UЦию — V ); |
Неподписанные форматы
Данные в формате без знака должны быть положительными. В неподписанных форматах используются сочетания (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance и (P)alette data. Данные палитры также называются индексированных цветом, так как данные используются для индексирования цветовой палитры.
Флаги формата без знака | Значение | Формат |
---|---|---|
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-разрядный формат пикселей, в котором 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_A2B10G10R10_XR_BIAS | 119 | 2.8 смещенной фиксированной точкой. Различия между Direct3D 9 и Direct3D 9Ex: Этот флаг доступен только в Direct3D 9Ex. |
D3DFMT_BINARYBUFFER | 199 | Двоичный формат, указывающий, что данные не имеют присущего типа. Различия между Direct3D 9 и Direct3D 9Ex: Этот флаг доступен только в Direct3D 9Ex. |
Другое
Этот флаг используется для неопределенных форматов.
Другие флаги | Значение | Формат |
---|---|---|
D3DFMT_UNKNOWN | 0 | Формат Surface неизвестен |
Требования
Требование | Значение |
---|---|
Заголовок |
|
См. также