Метод ID3DX10Mesh::D rawSubsetInstanced

Нарисуйте несколько экземпляров одного подмножества сетки.

Синтаксис

HRESULT DrawSubsetInstanced(
  [in] UINT AttribId,
  [in] UINT InstanceCount,
  [in] UINT StartInstanceLocation
);

Параметры

AttribId [in]

Тип: UINT

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

InstanceCount [in]

Тип: UINT

Число экземпляров для отрисовки.

StartInstanceLocation [in]

Тип: UINT

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

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

Тип: HRESULT

Возвращаемое значение является одним из значений, перечисленных в коде возврата Direct3D 10.

Комментарии

Сетка содержит таблицу атрибутов. Таблица атрибутов может разделить сетку на подмножества, где каждое подмножество определяется идентификатором атрибута. Например, сетка с 200 гранями, разделенная на три подмножества, может иметь таблицу атрибутов, которая выглядит следующим образом:

Subset Распознавание лиц
AttribID 0 Лица 0 ~ 50
AttribID 1 Лица 51 ~ 125
AttribID 2 Лица 126 ~ 200

 

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

Рисование экземпляров с помощью DrawSubsetInstanced очень похоже на процесс, используемый с ID3D10Device::D rawIndexedInstanced , описанный в примере instancing. Ключевое отличие при использовании DrawSubsetInstanced заключается в том, что буферы вершин и индексов должны быть извлечены из объекта интерфейса ID3DX10Mesh перед объединением данных instancing.

В следующем коде показано извлечение буферов вершин и индексов из объекта сетки.

      ID3D10Buffer* vertexBuffer;
      pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
      ID3D10Buffer* indexBuffer;
      pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
      

Требования

Требование Значение
Заголовок
D3DX10.h
Библиотека
D3DX10.lib

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

ID3DX10Mesh

Интерфейсы D3DX