Метод ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews (d3d11.h)
Привязывает ресурсы к этапу объединения выходных данных.
Синтаксис
void OMSetRenderTargetsAndUnorderedAccessViews(
[in] UINT NumRTVs,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView,
[in] UINT UAVStartSlot,
[in] UINT NumUAVs,
[in, optional] ID3D11UnorderedAccessView * const *ppUnorderedAccessViews,
[in, optional] const UINT *pUAVInitialCounts
);
Параметры
[in] NumRTVs
Тип: UINT
Количество целевых объектов отрисовки для привязки (в диапазоне от 0 до D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Если этот параметр не равен нулю, количество записей в массиве, на которые указывает ppRenderTargetViews , должно совпадать с числом в этом параметре. Если для numRTVs задано значение D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), этот метод не изменяет текущие привязанные представления целевого отображения (RTV), а также представление трафарета глубины (DSV).
[in, optional] ppRenderTargetViews
Тип: ID3D11RenderTargetView*
Указатель на массив ID3D11RenderTargetView, представляющий целевые объекты отрисовки для привязки к устройству. Если этот параметр имеет значение NULL , а NumRTVs равен 0, целевые объекты отрисовки не привязаны.
[in, optional] pDepthStencilView
Тип: ID3D11DepthStencilView*
Указатель на ID3D11DepthStencilView , представляющий представление трафарета глубины для привязки к устройству. Если этот параметр имеет значение NULL, представление трафарета глубины не привязано.
[in] UAVStartSlot
Тип: UINT
Выполните индекс в массив отсчитываемый от нуля, чтобы начать настройку представлений неупорядоченного доступа (в диапазоне от 0 до D3D11_PS_CS_UAV_REGISTER_COUNT –1).
Для среды выполнения Direct3D 11.1, доступной начиная с Windows 8, это значение может варьироваться от 0 до D3D11_1_UAV_SLOT_COUNT –1. D3D11_1_UAV_SLOT_COUNT определяется как 64.
Для пиксельных шейдеров значение UAVStartSlot должно быть равно количеству привязанных представлений для отрисовки.
[in] NumUAVs
Тип: UINT
Количество представлений неупорядоченного доступа в ppUnorderedAccessViews. Если для NumUAV задано значение D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), этот метод не изменяет текущие привязанные представления неупорядоченного доступа.
Для среды выполнения Direct3D 11.1, доступной начиная с Windows 8, это значение может варьироваться от 0 до D3D11_1_UAV_SLOT_COUNT — UAVStartSlot.
[in, optional] ppUnorderedAccessViews
Тип: ID3D11UnorderedAccessView*
Указатель на массив ID3D11UnorderedAccessView, представляющий представления с неупорядоченным доступом для привязки к устройству. Если этот параметр имеет значение NULL , а NumUAV равен 0, представления неупорядоченного доступа не привязаны.
[in, optional] pUAVInitialCounts
Тип: const UINT*
Массив смещения буфера добавления и использования. Значение -1 указывает на сохранение текущего смещения. Любые другие значения задают скрытый счетчик для этого добавляемого и потребляемого БПЛА. pUAVInitialCounts относится только к БПЛА, созданным с помощью D3D11_BUFFER_UAV_FLAG_APPEND или D3D11_BUFFER_UAV_FLAG_COUNTER , указанных при создании БПЛА; В противном случае аргумент игнорируется.
Возвращаемое значение
None
Remarks
Для пиксельных шейдеров целевые объекты отрисовки и представления с неупорядоченным доступом совместно используют одни и те же слоты ресурсов при записи. Это означает, что БПЛА должны иметь смещение, чтобы они размещались в слотах после привязанных целевых представлений отрисовки.
Два БПЛА конфликтуют, если они совместно используют подресурс (и, следовательно, совместно используют один и тот же ресурс).
RTV конфликтует с UAV, если у них есть общий подресурс или точка привязки.
OMSetRenderTargetsAndUnorderedAccessViews работает правильно в следующих ситуациях:
-
NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL и NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS
Следующие условия должны быть выполнены для успешного выполнения OMSetRenderTargetsAndUnorderedAccessViews и для того, чтобы среда выполнения передала сведения о привязке в драйвер:
- NumRTV<= 8
- UAVStartSlot>= NumRTV
- UAVStartSlot + NumUAVs<= 8
- В наборе всех объектов ppRenderTargetViews и ppUnorderedAccessViews не должно быть конфликтов.
- ppDepthStencilView должен соответствовать представлениям цели отрисовки. Дополнительные сведения о представлениях ресурсов см. в статье Общие сведения о ресурсе в Direct3D 11.
- Отменяет привязку всех связанных конфликтующих ресурсов (целевые ресурсы потокового вывода (SOTargets), БПЛА вычислительного шейдера (CS), представления ресурсов шейдера (SRV)).
- Привязывает ppRenderTargetViews, ppDepthStencilView и ppUnorderedAccessViews.
-
NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL
В этом случае OMSetRenderTargetsAndUnorderedAccessViews привязывает только БПЛА.
Следующие условия должны быть выполнены для успешного выполнения OMSetRenderTargetsAndUnorderedAccessViews и для того, чтобы среда выполнения передала сведения о привязке в драйвер:
- UAVStartSlot + NumUAVs<= 8
- В ppUnorderedAccessViews не должно быть конфликтов.
- Все RTV в слотах >= UAVStartSlot
- Все RTV, конфликтующие с любыми БПЛА в ppUnorderedAccessViews
- Все ресурсы, связанные в данный момент (SOTargets, БПЛА CS, SRV), конфликтующие с ppUnorderedAccessViews
OMSetRenderTargetsAndUnorderedAccessViews игнорирует ppDepthStencilView, и текущее представление трафарета глубины остается привязанным.
-
NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS
В этом случае OMSetRenderTargetsAndUnorderedAccessViews привязывает только RTV и DSV.
Следующие условия должны быть выполнены для успешного выполнения OMSetRenderTargetsAndUnorderedAccessViews и для того, чтобы среда выполнения передала сведения о привязке в драйвер:
- NumRTV<= 8
- В ppRenderTargetViews не должно быть конфликтов.
- ppDepthStencilView должен соответствовать представлениям цели отрисовки. Дополнительные сведения о представлениях ресурсов см. в статье Общие сведения о ресурсе в Direct3D 11.
- Все БПЛА в слотах <NumRTV
- Все БПЛА, конфликтующие с любыми RTV в ppRenderTargetViews
- Все ресурсы, связанные в данный момент (SOTargets, БПЛА CS, SRV), которые конфликтуют с ppRenderTargetViews
OMSetRenderTargetsAndUnorderedAccessViews игнорирует UAVStartSlot.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d11.h |
Библиотека | D3D11.lib |