XNA / DirectX: следует ли вам всегда использовать индексы? - PullRequest
1 голос
/ 25 мая 2009

Я внедряю рекламные щиты для растительности, где рекламный щит, конечно, представляет собой один квад, состоящий из двух треугольников. Данные о вершинах хранятся в буфере вершин, но стоит ли беспокоиться об индексах? Я понимаю, что экономия на таких вещах, как ландшафт, может быть огромной с точки зрения вершин, отправляемых на видеокарту, когда вы используете индексы, но использование индексов на рекламных щитах означает, что у меня будет 4 вершины на квад, а не 6, поскольку каждый квад отдельно от других.

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

Я спрашиваю об этом, потому что использование индексов немного усложнит ситуацию, и мне любопытно узнать, не занимаюсь ли я дополнительной работой, которая просто делает вещи медленнее (будь то в теории или на самом деле заметно на практике).

Это использует XNA, но должно применяться к DirectX.

Ответы [ 2 ]

2 голосов
/ 28 мая 2009

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

Если вы визуализируете много растительности с рекламными щитами и не меняете индексный буфер, я думаю, вы должны увидеть небольшой выигрыш.

1 голос
/ 25 мая 2009

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

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

...