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;
Комментарии
Существует несколько типов форматов:
- Форматы backBuffer или display
- Форматы буфера
- Форматы сжатых текстур 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 или display
Эти форматы являются единственными допустимыми форматами для заднего буфера или дисплея.
Формат | Задний буфер | Отображение |
---|---|---|
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. Это относится к поверхностям без экрана, целевым объектам отрисовки, двухD-текстурам, текстурам куба и текстурам объема.
Форматы 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 и you. |
D3DFMT_X8L8V8U8 | 62 | Формат 32-разрядной карты с яркостью, использующей 8 бит для каждого канала. |
D3DFMT_A2W10V10U10 | 67 | Формат 32-разрядной схемы ударов, в котором используется 2 бита для альфа-канала и 10 бит для w, v и you. |
Подписанные форматы
Данные в формате со знаком могут быть как положительными, так и отрицательными. В подписанных форматах используются сочетания данных (U), (V), (W) и (Q).
Флаги подписанного формата | Значение | Формат |
---|---|---|
D3DFMT_V8U8 | 60 | 16-разрядный формат bump-map с использованием 8 бит каждый для вас и v данных. |
D3DFMT_Q8W8V8U8 | 63 | 32-разрядный формат bump-map с 8 битами для каждого канала. |
D3DFMT_V16U16 | 64 | 32-разрядный формат bump-map с использованием 16 бит для каждого канала. |
D3DFMT_Q16W16V16U16 | 110 | Формат 64-разрядной схемы bump-map с 16 битами для каждого компонента. |
D3DFMT_CxV8U8 | 117 | 16-разрядный формат нормального сжатия. Средство выборки текстур вычисляет канал C из: C = sqrt(1 - U² - V²). |
Неподписанные форматы
Данные в неподписаемом формате должны быть положительными. В форматах без знака используются сочетания данных (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance и (P)alette. Данные палитры также называются данными с индексированием цвета, так как они используются для индексирования цветовой палитры.
Флаги неподписаного формата | Значение | Формат |
---|---|---|
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 неизвестен |
Требования
Требование | Значение |
---|---|
Заголовок |
|
См. также раздел