Отбраковка объектов вне экрана в OpenGL ES 2 2D - PullRequest
1 голос
/ 29 октября 2019

Я играю с OpenGL ES 2.0. Если я работаю с простой 2D-проекцией, если у меня есть большая 2D-сетка вершин, которые в значительной степени статичны (например, фрагменты карты), из которых только небольшая часть видна одновременно, было бы лучше. ..

  • Определить в ЦП, какие вершины видны, и создать VBO, чтобы нарисовать только те треугольники, которые составляют видимые плитки в каждом кадре?

или

  • Сохраняйте статическое VBO со всей мозаичной сеткой, а затем просто полагайтесь на видеокарту (в моем случае RPi), чтобы вырезать закадровые треугольники?

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

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

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

Есть некоторые другие варианты, такие как более экзотическая структура для разбиения самолета на подобласти, я думаю. Тем не менее, я не уверен, что все это действительно необходимо.

Спасибо!

Обратите внимание: Я не хочу обсуждать рисование плиток в фрагментном шейдере,Меня больше интересует правильный способ работы с вершинным шейдером, чем реальное решение описанной проблемы.

...