2D OpenGL сцена замедляется с множеством перекрывающихся фигур

SHOW STATUS WHERE `variable_name` = 'Threads_connected';

Это покажет вам все открытые соединения.

1
задан jmasterx 20 June 2010 в 13:23
поделиться

2 ответа

Используются ли в ваших двух случаях (перекрывающиеся и неперекрывающиеся) один и тот же набор форм? Потому что, если в случае перекрытия общая площадь всех ваших фигур больше, чем в первом случае, можно ожидать, что он будет медленнее. Если один и тот же набор фигур замедляется, если некоторые из них перекрываются, то это было бы очень необычно и не должно происходить ни в какой стандартной аппаратной реализации OpenGL (какую платформу вы используете?). Удаление обратной стороны не вызовет никаких проблем.

Каждый раз, когда фигура рисуется, графический процессор должен выполнять некоторую работу для каждого пикселя, который он покрывает на экране. Если вы нарисуете одну и ту же фигуру 100 раз в одном и том же месте, то это в 100 раз больше работы с пикселями.Буферизация глубины может снизить некоторые дополнительные затраты на непрозрачные объекты, если вы рисуете объекты в порядке сортировки по глубине, но этот трюк не работает для вещей, использующих прозрачность.

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

2
ответ дан 2 September 2019 в 23:39
поделиться

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

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

Edit: Hmm, я (почему-то) пропустил тот факт, что это 2D, несмотря на то, что OP неоднократно упоминал об этом.

0
ответ дан 2 September 2019 в 23:39
поделиться