DrawIndexedInstanced с другим индексом для каждого экземпляра (Directx11) - PullRequest
0 голосов
/ 24 октября 2018

В моем приложении много случаев, когда я делаю вызовы с использованием одного и того же шейдера с разными унифицированными значениями и думаю о создании таких вызовов.Однако в моем случае колл-колы имеют различное количество треугольников.

Насколько я понимаю DrawIndexedInstanced, он позволяет рисовать только несколько экземпляров с одинаковым количеством треугольников / индексов, поэтому, думаю, я не смогу это использовать.

Я думал, чтоDrawIndexedInstancedIndirect может помочь, но это, кажется, только для выполнения нескольких вызовов DrawIndexedIstanced.

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

1 Ответ

0 голосов
/ 30 октября 2018

Как указано в документации , экземплярный чертеж должен

[...] повторно использовать одну и ту же геометрию для рисования нескольких объектов в сцене.

Повышает производительность, не меняя данные вершин, а используя их повторно, что, как кажется, не относится к вашим данным, где источники вершин различны для каждого вызова отрисовки.

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

...