Оптимизация 2D-чертежа OpenGL ES 2.0 с использованием грязных прямоугольников - PullRequest
0 голосов
/ 24 апреля 2011

Можно ли оптимизировать рисование OpenGL ES 2.0, используя грязные прямоугольники?

В моем случае у меня есть 2D-приложение, которое должно рисовать текстуру фона (полный экран на iPad), а затем содержимое нескольких VBO в каждом кадре. Проблема заключается в том, что эти VBO могут содержать миллионы вершин, и на вывод всего изображения уходит от пары секунд. Тем не менее, только небольшая часть дисплея будет обновляться каждый кадр.

Возможна ли эта оптимизация и как (или, возможно, более целесообразно, где) это будет реализовано? Нужно ли передавать вершинный шейдер какую-то плоскость отсечения?

1 Ответ

1 голос
/ 24 апреля 2011

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

Таким образом, вы должны сортировать и разбивать свои объекты на более мелкие (например, ограниченные прямоугольником) плитки и самостоятельно проверять их на предмет поля зрения.

...