Метод 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);
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел