Средние треугольники в DirectX 10

Поэтому я хочу проверить некоторую информацию для моего проекта.
У меня есть видеокарта GTX 460. Я написал программу DX10 с 20k треугольниками, напечатанными на экране, и теперь я получаю 28 FPS в версии Release. Все эти треугольники вызывают DrawIndexed внутри них, так что это, конечно, накладные расходы на коллирование такого количества дро.

Но в любом случае, я хотел бы знать: сколько треугольников я могу нарисовать на экране с этими возможностями и на каком FPS? Я думаю, что 20k треугольников недостаточно даже для загрузки хороших моделей на игровую сцену.

Извините за мой ужасный английский.

0

Решение

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

  • Профилируйте свой код, и nVidia, и AMD могут бесплатно предоставить вам информацию о том, почему ваш код работает медленно, что позволяет вам сосредоточиться на том, что действительно важно, поэтому используйте их.
  • Индексные буферы & полоски треугольника для уменьшения пропускной способности
  • Группировка вершин по типу материала / состоянию / текстуре для улучшения дозирования
  • Создание примитивных групп: нарисуйте несколько моделей / сеток за один вызов
  • Удалите как можно больше избыточных изменений состояния (установка шейдеров, текстур, буферов, параметров), это идет рука об руку с группой, упомянутой ранее

DX SDK будет иметь примеры реализации каждого из них. Точная сумма для треугольников, которые вы можете нарисовать, и приличный FPS (30 или 60, если вы хотите vsync) сильно варьируется в зависимости от сложности затенения треугольников, однако, если нарисовать проще всего, вы сможете набрать несколько миллионов с легкость.

Я бы рекомендовал хорошенько взглянуть на внутренности движка с открытым исходным кодом DX11 (существует не так много проектов DX10, но API практически идентичен), например, Гейроглиф 3, и пройти через учебники SDK.

Есть также довольно много презентаций о повышении производительности с DX10, но профилируйте ваш код, прежде чем углубляться в предложения, в полной мере, вот некоторые из самих поставщиков оборудования (подсказки с цветовой кодировкой для оборудования nVidia против AMD):

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]