функция обратного вызова PFND3D11DDI_SETRENDERTARGETS (d3d10umddi.h)
Наборы функций SetRenderTargets(D3D11) отображают целевые поверхности.
Синтаксис
PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;
void Pfnd3d11ddiSetrendertargets(
[in] D3D10DDI_HDEVICE unnamedParam1,
[in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
[in] UINT NumRTVs,
[in] UINT ClearSlots,
[in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
[in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
[in] const UINT *unnamedParam7,
UINT UAVStartSlot,
[in] UINT NumUAVs,
[in] UINT UAVRangeStart,
[in] UINT UAVRangeSize
)
{...}
Параметры
[in] unnamedParam1
hDevice: дескриптор устройства отображения (графический контекст).
[in] unnamedParam2
phRenderTargetView: массив дескрипторов для заданных объектов целевого представления отрисовки (RTV). Обратите внимание, что некоторые значения дескрипторов могут иметь значение NULL.
[in] NumRTVs
Количество элементов в массиве, предоставленном в phRenderTargetView для устанавливаемых RTV-представлений.
[in] ClearSlots
Количество объектов RTV для отмены привязки; то есть отрисовывает объекты целевого представления, которые ранее были привязаны, но больше не должны быть привязаны.
[in] unnamedParam5
hDepthStencilView: дескриптор буфера трафарета глубины для задания.
[in] unnamedParam6
phUnorderedAccessView: массив дескрипторов для устанавливаемых объектов неупорядоченного представления доступа (UAV).
[in] unnamedParam7
pUAVInitialCounts: массив смещений буфера добавления и использования. Этот параметр относится только к БПЛА массива phUnorderedAccessView , которые были созданы с помощью D3D11_DDI_BUFFER_UAV_FLAG_APPEND или D3D11_DDI_BUFFER_UAV_FLAG_COUNTERзаданы в элементе Flagsструктуры D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW при создании UAV; в противном случае он игнорируется. Если элемент в этом массиве имеет значение -1, текущее смещение для буфера добавления и потребления должно сохраняться. Любое другое значение приводит к тому, что драйвер устанавливает скрытый счетчик для этого БПЛА, добавляя и используя буфер.
UAVStartSlot
Индекс первого привязываемого БПЛА. Параметр UAVStartSlot должен быть по крайней мере таким же, как и параметр NumRTVs .
Примечание
Для RTV и БПЛА существует только один общий набор точек привязки. Сначала привязываются RTV, за которыми следуют БПЛА.
[in] NumUAVs
Количество привязываемых БПЛА.
[in] UAVRangeStart
Первый БПЛА в наборе всех обновленных БПЛА (включая привязки NULL ).
[in] UAVRangeSize
Количество БПЛА в наборе всех обновленных БПЛА (включая привязки NULL ).
Возвращаемое значение
None
Remarks
Дескрипторы ресурсов, такие как RTV и БПЛА, должны быть привязаны (помещены во входные слоты), прежде чем шейдеры смогут получить к ним доступ для чтения или записи.
На следующем рисунке показан пример с пятью ресурсами.
В приведенном выше примере:
- NumRTVs = 2
- UAVStartSlot = 2
- NumUAV = 3
NumUAVs и UAVStartSlot указывают, какой диапазон в массиве БПЛА содержит изменения относительно состояния, которое было ранее привязано. Обратите внимание, что точки в диапазоне могут быть без изменений.
Параметры UAVRangeStart и UAVRangeSize — это удобство, которое показывает диапазон фактических изменений , учитывая, что Direct3D DDI всегда привязывает все (включая то, что не изменилось). Среда выполнения D3D11 сформулирует их от имени приложения в качестве дополнительных сведений для модулей записи драйверов в качестве подсказок для возможной оптимизации. Как правило, среда выполнения D3D11 вызывает эту функцию со значениями UAVRangeStart и UAVRangeSize , чтобы указать весь диапазон. Используя приведенный выше пример:
- Чтобы выбрать весь диапазон (предполагается, что изменения не произойдет), UAVRangeStart = 2 и UAVRangeSize = 3.
- Чтобы указать, что изменился только первый БПЛА, UAVRangeStart = 2 и UAVRangeSize = 1.
Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.
Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Microsoft Direct3D определит, что ошибка является критической. Даже если устройство было удалено, драйвер не обязан возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства мешало работе SetRenderTargets (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | SetRenderTargets(D3D11) поддерживается начиная с операционной системы Windows 7. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3d10umddi.h (включая D3d10umddi.h) |