Затраты на изменение текстуры (и другие изменения состояния) на современных графических процессорах - PullRequest
4 голосов
/ 21 июля 2011

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

Я создал небольшое тестовое приложение в XNA 4, которое рендерило сотни моделей кроликов Стэнфорда с одной текстурой, а затем делало то же самое, переключая 2 разные текстуры. Не было никакой разницы во времени рендеринга (однако я использовал маленькие текстуры ~ 100x100).

Итак, мои вопросы:

  • Должен ли я действительно заботиться о сортировке моих примитивов по параметрам текстуры / цвета / других материалов? Или это менее важно на современных графических процессорах?
  • Каков ожидаемый процент потери производительности, если я этого не сделаю?
  • Существуют ли другие изменения состояния, которые могут повлиять на производительность?
  • Где я могу найти актуальную литературу / руководство по наилучшей практике по этому поводу?

Спасибо за любую помощь или ссылки!

1 Ответ

8 голосов
/ 21 июля 2011

Изменения состояния на самом деле не были дорогими в течение длительного времени. Пакеты стоят дорого. (И изменение состояния требует новой партии).Пакет - это, по сути, вызов функции Draw*Primitives.

Этот документ от nVidia объясняет это подробно.Это также дает идеи по уменьшению количества ваших партий.

Партии - это ограничение на основе процессора (не GPU).В этом PDF-файле в качестве точки, в которой отправка пакетов доминирует над производительностью, указывается «<130 трис / пакет», а графический процессор бездействует в ожидании новых пакетов (<a href="http://blogs.msdn.com/b/shawnhar/archive/2008/03/31/an-elf-in-a-box.aspx" rel="nofollow noreferrer"> подробнее ).В нем также говорится, что вы получаете около 400 пакетов на кадр со скоростью 60 кадров в секунду на 1 ГГц процессорной мощности, выделенной для отправки пакетов.(Хотя PDF-файл немного устарел, поэтому эти цифры немного устарели.)

Мой ответ на сайте gamedev на аналогичный вопрос должен предоставить некоторые дополнительные сведения. Это тоже .

...