Поделиться через


функция обратного вызова PFND3D11DDI_DRAWINDEXEDINSTANCEDINDIRECT (d3d10umddi.h)

Функция DrawIndexedInstancedIndirect рисует определенные экземпляры индексированных примитивов.

Синтаксис

PFND3D11DDI_DRAWINDEXEDINSTANCEDINDIRECT Pfnd3d11ddiDrawindexedinstancedindirect;

void Pfnd3d11ddiDrawindexedinstancedindirect(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3
)
{...}

Параметры

unnamedParam1

hDevice [in]

Дескриптор устройства отображения (графический контекст).

unnamedParam2

hBufferForArgs

Дескриптор буфера, содержащий аргументы для обработки DrawIndexedInstancedIndirect . Буфер содержит следующую плотно упакованную структуру:

struct DrawIndexedInstancedIndirectArgs {
  UINT IndexCountPerInstance; 
  UINT InstanceCount;
  UINT StartIndexLocation;
  INT BaseVertexLocation;
  UINT StartInstanceLocation;
}

Дополнительные сведения об этих аргументах см. на справочной странице DrawIndexedInstanced .

unnamedParam3

AlignedByteOffsetForArgs

Смещение (в байтах) в буфер, который указывает hBufferForArgs . Значение AlignedByteOffsetForArgs должно быть кратным 4.

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

None

Remarks

Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.

Функция DrawIndexedInstancedIndirect выполняет ту же задачу, что и вызов функции DrawIndexedInstanced драйвера. Однако DrawIndexedInstancedIndirect получает сведения о примитивах индекса из содержимого буфера, указанного параметром hBufferForArgs . DrawIndexedInstancedIndirect считывает содержимое буфера, начиная со смещения байтов, заданного параметром AlignedByteOffsetForArgs .

Когда среда выполнения Direct3D вызывает функцию CreateResource(D3D11) драйвера для создания буферного ресурса, заданного параметром hBufferForArgs , среда выполнения должна установить флаг D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS в элементе MiscFlags структуры D3D11DDIARG_CREATERESOURCE .

Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Direct3D определяет, что ошибка является критической. Даже если устройство удалено, драйвер не обязан возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства мешает работе DrawIndexedInstancedIndirect (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.

Требования

Требование Значение
Минимальная версия клиента DrawIndexedInstancedIndirect поддерживается начиная с операционной системы Windows 7.
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

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

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

DrawIndexedInstanced

pfnSetErrorCb