Здесь «многоугольник» относится к треугольнику. Все . Однако, как вы указали, существует гораздо больше переменных, чем просто количество треугольников, которые определяют производительность.
Ключевые вопросы, которые имеют значение:
- Формат хранилища (индексированный или нет; список, вентилятор или полоса)
- Местоположение хранилища (массивы вершин памяти хоста, буферы вершин памяти хоста или буферы вершин памяти GPU)
- Режим рендеринга (это команда примитива рисования, полностью выданная с хоста или через инстансинг)
- Размер треугольника
Вместе эти переменные могут создать намного более чем двукратное изменение производительности.
Аналогично, оборудование, на котором работает приложение, в реальном мире может отличаться в 10 и более раз производительностью: графический процессор (или встроенный графический процессор), который был бюджетным в 2005 году, будет работать в 10-100 раз медленнее в любой значимой метрике. чем текущий топовый графический процессор.
В общем, любая рекомендация использовать 2-4000 треугольников настолько нелепо устарела, что сегодня ее следует полностью игнорировать. Даже низкоуровневое оборудование сегодня может легко протолкнуть 100 000 треугольников в кадре при разумных условиях. Кроме того, в большинстве визуально интересных приложений сегодня преобладают показатели затенения пикселей, а не числа треугольников.
Общие правила для достижения хорошей пропускной способности треугольника сегодня:
- Использовать [проиндексированные] треугольные (или четырехугольные) списки
- Хранить данные в буферах вершин GPU-памяти
- Розыгрыш больших партий при каждом вызове розыгрыша примитивов (тысячи примитивов)
- Используйте в основном треугольники> = 16 пикселей на экране
- Не используйте геометрический шейдер (особенно для усиления геометрии)
Делайте все это, и любая современная машина должна с легкостью отображать десятки или сотни тысяч треугольников.