Метод ID3D11DeviceContext::OMSetRenderTargets (d3d11.h)

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

Синтаксис

void OMSetRenderTargets(
  [in]           UINT                   NumViews,
  [in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
  [in, optional] ID3D11DepthStencilView *pDepthStencilView
);

Параметры

[in] NumViews

Тип: UINT

Количество целевых объектов отрисовки для привязки (в диапазоне от 0 до D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Если этот параметр не равен нулю, количество записей в массиве, на которые указывает ppRenderTargetViews , должно совпадать с числом в этом параметре.

[in, optional] ppRenderTargetViews

Тип: ID3D11RenderTargetView*

Указатель на массив ID3D11RenderTargetView , представляющий целевые объекты отрисовки для привязки к устройству. Если этот параметр имеет значение NULL , а NumViews — 0, то целевые объекты отрисовки не привязаны.

[in, optional] pDepthStencilView

Тип: ID3D11DepthStencilView*

Указатель на ID3D11DepthStencilView , представляющий представление трафарета глубины для привязки к устройству. Если этот параметр имеет значение NULL, представление трафарета глубины не привязано.

Возвращаемое значение

None

Remarks

Максимальное количество активных целевых объектов отрисовки, которые устройство может быть активным в любой момент времени, задается #define в D3D11.h с именем D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. Недопустимо пытаться задать для одного подресурса несколько целевых слотов отрисовки. Все целевые объекты отрисовки, не определенные этим вызовом, имеют значение NULL.

Если какие-либо подресурсы также в настоящее время привязаны к чтению на другом этапе или записи (возможно, в другой части конвейера), для этих точек привязки будет задано значение NULL, чтобы предотвратить одновременное чтение и запись одного подресурса в рамках одной операции отрисовки.

Метод будет содержать ссылку на переданные интерфейсы. Это отличается от поведения состояния устройства в Direct3D 10.

Если представления, предназначенные для отрисовки, были созданы из типа ресурса массива, все представления, предназначенные для отрисовки, должны иметь одинаковый размер массива.
Это ограничение также применяется к представлению трафарета глубины. Его размер массива должен соответствовать размеру привязанных представлений для отрисовки.

Пиксельный шейдер должен иметь возможность одновременно отображать по крайней мере восемь отдельных целевых объектов отрисовки. Все эти целевые объекты отрисовки должны обращаться к одному типу ресурсов: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D или TextureCube. Все целевые объекты отрисовки должны иметь одинаковый размер во всех измерениях (ширина и высота и глубина для трехмерных объектов или размер массива для *Типов массивов). Если в целевых объектах отрисовки используется сглаживание с несколькими выборками, все привязанные целевые объекты отрисовки и буфер глубины должны иметь одинаковую форму ресурса multisample (то есть количество выборок должно быть одинаковым). Каждый целевой объект отрисовки может иметь другой формат данных. В этих целевых форматах отрисовки не требуется одинаковое число битов на элемент.

Любое сочетание из восьми слотов для целевых объектов отрисовки может иметь заданный или не заданный целевой объект отрисовки.

Одно и то же представление ресурсов не может быть привязано к нескольким целевым слотам отрисовки одновременно. Однако можно задать несколько неперекрывающихся представлений ресурсов для одного ресурса в качестве одновременного нескольких целевых объектов отрисовки.

Обратите внимание, что в отличие от некоторых других методов ресурсов в Direct3D, все привязанные в настоящее время целевые объекты отрисовки будут освобождены путем вызова OMSetRenderTargets(0, nullptr, nullptr);.

Требования

Требование Значение
Целевая платформа Windows
Header d3d11.h
Библиотека D3D11.lib

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

ID3D11DeviceContext