Структура FORMATOP (d3dumddi.h)

Структура FORMATOP описывает формат поверхности и операции, которые можно выполнять с такой поверхностью.

Синтаксис

typedef struct _FORMATOP {
  [in]  D3DDDIFORMAT Format;
  [out] UINT         Operations;
  [out] UINT         FlipMsTypes;
  [out] UINT         BltMsTypes;
  [out] UINT         PrivateFormatBitCount;
} FORMATOP;

Члены

[in] Format

D3DDDIFORMAT типизированное значение, указывающее формат пикселей поверхности.

[out] Operations

Допустимый побитовый или из следующих флагов, указывающих операции, которые могут выполняться на поверхностях с форматом пикселей, указанным в элементе Format . Некоторые из следующих флагов подразумевают, что следует использовать другие флаги. Если драйвер устанавливает флаг, который подразумевает другие флаги, драйвер не требуется устанавливать неявные флаги, а среда выполнения Direct3D определяет использование подразумеваемых флагов.

FORMATOP_TEXTURE (0x00000001L)

Поверхности указанного формата пикселей можно использовать в качестве текстур, сопоставленных с MIP.

FORMATOP_VOLUMETEXTURE (0x00000002L)

Поверхности этого формата можно использовать в качестве объемных текстур. Обратите внимание, что этот флаг не зависит от FORMATOP_TEXTURE. Таким образом, формат пикселей можно использовать для объемных текстур, а не для обычных текстур, сопоставленных с MIP.

FORMATOP_CUBETEXTURE (0x00000004L)

Поверхности этого формата можно использовать в качестве текстур кубической карты среды. Обратите внимание, что этот флаг не зависит от FORMATOP_TEXTURE. Таким образом, формат пикселей можно использовать для текстур кубической карты среды, а не для обычных текстур, сопоставленных с MIP.

FORMATOP_OFFSCREEN_RENDERTARGET (0x00000008L)

Поверхности этого формата можно использовать в качестве целевых объектов отрисовки вне зависимости от формата пикселей режима отображения, если формат пикселей текущего режима отображения был указан с FORMATOP_DISPLAYMODE и FORMATOP_3DACCELERATION. Если в формате пикселей текущего режима отображения не заданы эти флаги, в этом режиме не будет доступно трехмерное ускорение, даже если целевой объект отрисовки находится вне экрана. Флаг FORMATOP_OFFSCREEN_RENDERTARGET можно объединить с FORMATOP_TEXTURE, чтобы указать, что устройство может отрисовывать текстуры указанного формата пикселей.

Флаг FORMATOP_OFFSCREEN_RENDERTARGET также подразумевает флаги FORMATOP_SAME_FORMAT_RENDERTARGET и FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET.

FORMATOP_SAME_FORMAT_RENDERTARGET (0x00000010L)

Поверхности этого формата можно использовать в качестве целевых объектов отрисовки, но только в том случае, если формат пикселей поверхности соответствует формату пикселей текущего режима отображения. Этот флаг применяется не только к целевым объектам отрисовки вне экрана, но может быть указан в пиксельных форматах режимов отображения, чтобы указать возможность целевого объекта отрисовки. Этот флаг можно объединить с FORMATOP_TEXTURE, чтобы указать, что устройство может отрисовывать текстуры указанного формата пикселей.

Флаг FORMATOP_SAME_FORMAT_RENDERTARGET также подразумевает флаг FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET.

FORMATOP_ZSTENCIL (0x00000040L)

Поверхности этого формата можно использовать в качестве буферов Z/трафарета, но только в том случае, если глубина поверхности Z/трафарета соответствует глубине цвета целевого объекта отрисовки, к которому прикреплен буфер глубины. Используйте шаг пикселя при выборе соответствия между Z/набором элементов и глубиной буфера цвета.

FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH (0x00000080L)

Поверхности этого формата можно использовать в качестве буферов Z/трафарета, независимо от глубины цвета целевого объекта отрисовки, к которому прикреплена поверхность.

Флаг FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH также подразумевает флаг FORMATOP_ZSTENCIL.

FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET (0x00000100L)

Поверхности этого формата можно использовать в качестве целевых объектов отрисовки, если текущий режим отображения имеет одинаковую глубину и альфа-канал игнорируется. Например, если устройство может отображаться в A8R8G8B8, когда режим отображения X8R8G8B8, этот флаг должен быть установлен для записи списка операций форматирования для A8R8G8B8.

FORMATOP_DISPLAYMODE (0x00000400L)

Режим отображения с этим форматом пикселей, поддерживаемый моделью драйвера (включая Flip). Этот флаг не следует устанавливать в альфа-форматах.

FORMATOP_3DACCELERATION (0x00000800L)

Графический ускоритель может поддерживать определенный уровень ускорения Microsoft Direct3D в режиме отображения с этим форматом пикселей, и драйвер может создать контекст в этом режиме (для некоторых форматов целевого объекта отрисовки). Этот флаг можно использовать только при создании отчетов о форматах режима отображения (путем указания FORMATOP_DISPLAYMODE). Этот флаг не следует использовать для создания отчетов о форматах целевых объектов отрисовки вне экрана.

FORMATOP_PIXELSIZE (0x00001000L)

Драйвер заполняет биты на пиксель для формата в элементе PrivateFormatBitCount .

Если драйвер требует, чтобы управляемые поверхности и текстуры использовали закрытый формат (формат, который может обрабатываться драйвером, но не изначально средой выполнения Direct3D), драйвер должен указать FORMATOP_PIXELSIZE и размер пикселей в PrivateFormatBitCount.

FORMATOP_CONVERT_TO_ARGB (0x00002000L)

Исходные поверхности этого формата можно преобразовать в любую целевую поверхность с форматом RGB-пикселей, для которого задан флаг FORMATOP_MEMBEROFGROUP_ARGB.

FORMATOP_OFFSCREENPLAIN (0x00004000L)

Драйвер может растягиваться к поверхностям этого формата и от нее, а также к поверхностям заливки цвета.

FORMATOP_SRGBREAD (0x00008000L)

Поверхности этого формата можно считывать из как текстуры в формате sRGB (то есть дискретизатор линеализует уточняющие данные).

FORMATOP_BUMPMAP (0x00010000L)

Поверхности этого формата можно использовать в качестве текстуры карты среды удара. Обратите внимание, что этот флаг не зависит от FORMATOP_TEXTURE. Таким образом, формат пикселей можно использовать для текстур карты среды удара, а не для обычных текстур, сопоставленных с MIP.

FORMATOP_DMAP (0x00020000L)

Выборка карты смещения может выполнять выборку поверхностей этого формата.

FORMATOP_NOFILTER (0x00040000L)

Поверхности этого формата нельзя использовать с фильтрацией текстур.

FORMATOP_MEMBEROFGROUP_ARGB (0x00080000L)

Целевые поверхности этого формата можно преобразовать из любой исходной поверхности с форматом пикселей, для которого задан флаг FORMATOP_CONVERT_TO_ARGB. Драйвер может указать FORMATOP_MEMBEROFGROUP_ARGB только для поверхностей ARGB с по крайней мере 5 битами цветовой информации для каждого канала. Это значит, что формат D3DDDIFMT_A1R5G5B5 является допустимым, но D3DDDIFMT_A4R4G4B4 формат недопустим. Если драйвер указывает FORMATOP_MEMBEROFGROUP_ARGB с недопустимым форматом, среда выполнения Direct3D предотвращает загрузку Direct3D HAL. Обратите внимание, что хотя этот флаг указывает на форматы ARGB, среда выполнения также позволяет драйверу указывать поверхности с форматами XRGB (например, D3DDDIFMT_X1R5G5B5).

FORMATOP_SRGBWRITE (0x00100000L)

Поверхности этого формата могут быть записаны в целевые объекты в формате sRGB (то есть пиксельный канал делинеаризирует данные на выходных данных в этом формате).

FORMATOP_NOALPHABLEND (0x00200000L)

Поверхности этого формата нельзя использовать с альфа-смешения.

FORMATOP_AUTOGENMIPMAP (0x00400000L)

Подстроки текстур, сопоставленных с MIP в этом формате, можно создать автоматически. Чтобы драйвер получал вызовы функции GenerateMipSubLevels , этот флаг должен быть предоставлен.

FORMATOP_VERTEXTEXTURE (0x00800000L)

Дискретизатор текстур вершин может использовать поверхности этого формата. То есть в качестве текстур вершин можно использовать только поверхности этого формата.

FORMATOP_NOTEXCOORDWRAPNORMIP (0x01000000L)

Поверхности этого формата можно условно использовать только для сопоставления текстур двухуровневых текстур с размерами, не являющимися 2. Дополнительные сведения см. в определениях для D3DPTEXTURECAPS_POW2 и D3DPTEXTURECAPS_NONPOW2CONDITIONAL на странице справки по D3DPRIMCAPS .

FORMATOP_PLANAR (0x02000000L)

Поверхности этого формата являются плоских и упакованных. Среда выполнения Direct3D должна выделить буфер, если она вызывает функцию Lock драйвера дисплея в пользовательском режиме на поверхности с плоской форматом, в то время как поверхность теряется, и обычное вычисление высоты с умноженным шагом в разы невозможно. Большинство форматов упаковываются, за исключением форматов, которые используются в Microsoft DirectX Video Acceleration (например, форматы YUV).

FORMATOP_OVERLAY (0x04000000L)

Поверхности этого формата используются для операций наложения.

FORMATOP_CAPTURE (0x08000000L)

Если задан элемент VideoEncoderструктуры D3DDDI_RESOURCEFLAGS2 , поверхности этого формата можно использовать в качестве буферов захвата.

Поддерживается начиная с Windows 8.

FORMATOP_VIDEO_ENCODER (0x10000000L)

Если задан элемент VideoEncoderструктуры D3DDDI_RESOURCEFLAGS2 , поверхности этого формата можно использовать в качестве входных ресурсов кодировщика видео.

Поддерживается начиная с Windows 8.

FORMATOP_MULTIPLANE_OVERLAY (0x20000000L)

Поверхности этого формата поддерживают многоплановый наложение.

Поддерживается начиная с Windows 8.

[out] FlipMsTypes

32-разрядная маска для многоэкранной выборки.

[out] BltMsTypes

32-разрядная маска для оконной выборки.

[out] PrivateFormatBitCount

Биты на пиксель в формате пикселей, который является частным для драйвера (то есть не один из стандартных форматов пикселей, определенных типом перечисления D3DDDIFORMAT ).

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Верхняя часть d3dumddi.h (включая D3dumddi.h)

См. также раздел

D3DDDIARG_GETCAPS

D3DDDICAPS_TYPE

D3DDDIFORMAT

D3DDDI_RESOURCEFLAGS2

GetCaps