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

Я рисую 2D фигуры с помощью OpenGL.Они не используют столько многоугольников.Я заметил, что у меня может быть много форм, если они не пересекаются.Если я получаю форму позади формы позади ... и т.д .., это действительно начинает отставать.Я чувствую, что могу делать что-то не так.Это нормально и есть ли способ это исправить (я не могу пропустить рендеринг, потому что я делаю смешивание для альфа).У меня также включена функция отсечки CW.

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

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

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

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

0 голосов
/ 20 июня 2010

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

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

Редактировать: Хм, я (как-то) упустил тот факт, что это 2D, несмотря на то, что ОП неоднократно упоминал об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...