Компьютерная графика

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Компьютерная графика » Программирование графики и GPU » Сортировка полигонов по текстурам


Сортировка полигонов по текстурам

Сообщений 1 страница 10 из 10

1

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

0

2

Насколько я знаю тот же Quake III выводит сортируя по текстурам - цель по любому минимизировать число переключени

0

3

Цель - уменьшить число переключений состояний. IMHO это оправдывает себя.
Тем более что обычно редко каждоый полигон имеет свою уникальную текстуру - обычно они и так уже каким-то образом сгруппированы, поэтому задача сводится с ортировке групп объектов.
При этом от кадра к кадру эта сортировка практически не меняется - может лишь что-то добавиться или быть убрано. Поэтому можно не сортировать на каждом кадре все заново

0

4

У меня рендере второго прохода FPS падает соответственно в двое, что естественно логично. Но по сути рисуются те же самые полигоны только с другими текстурами. Как можно повыстить эффективность в данном случае?

Отредактировано X-ti (2011-02-11 12:08:01)

0

5

А если повторно выводить с теми же текстурами ?

0

6

Сейчас подправил код. Не помогло. Выводилось через glDrawElements, при чем теперь убрал glTexCoordPointer и glVertexPointer во втором проходе, ведь индексы те же самые.
Как "сказать"  OpenGL'ю, что нужно вывести полигоны из предыдущего прохода лишь с другими текстурами, а не производить все вычисления по-новой? Может быть рендерить в буфер вершин?

Отредактировано X-ti (2011-02-11 22:31:04)

0

7

Похоже разобрался что так убивало скорость... Если отключать запись в буфер глубины для второго прохода glDepthMask(GL_FALSE), то fps падает всего на 25% =)

0

8

Можно еще во втором проходе поставить
gLDepthTest(GL_EQUAL), тоже может помочь

0

9

GL_EQUAL пробовал, только с GL_LEQUAL или GL_LESS второй проход виден. Такое ощущение, что полигоны во втором проходе чуть меньше по глубине, чем те же самые, но уже выведенные.

P.S. Помню, вроде было такое расширение, которое позволяет смещать полигоны по глубине

P.P.S. наверно второй проход так сильно бьет по производительности потому что я не выполняю сортировку по текстурам и вызываю glDrawElements для каждого полигона в отдельности

0

10

Если полигоны те же самые и шейдеры не меняются, то должно быть тоже самое (на этом основан прием z-prepass, использованный например еще в Doom III)
А смещение - это polygon offset, поищите у меня на сайте в разделе старых статей это есть

0


Вы здесь » Компьютерная графика » Программирование графики и GPU » Сортировка полигонов по текстурам


создать форум