Я играю с OpenGL ES 2.0. Если я работаю с простой 2D-проекцией, если у меня есть большая 2D-сетка вершин, которые в значительной степени статичны (например, фрагменты карты), из которых только небольшая часть видна одновременно, было бы лучше. ..
- Определить в ЦП, какие вершины видны, и создать VBO, чтобы нарисовать только те треугольники, которые составляют видимые плитки в каждом кадре?
или
- Сохраняйте статическое VBO со всей мозаичной сеткой, а затем просто полагайтесь на видеокарту (в моем случае RPi), чтобы вырезать закадровые треугольники?
Или, может быть, какая-то комбинация двух (например, наборы перекрывающихся предварительно вычисленных сеток)? Насколько большой должна быть сетка, чтобы последний вариант стал неработоспособным?
Редактировать Я решил сделать несколько вызовов glDrawElements (), рисуя поддиапазоны буфера индекса, которые я зналбудет перекрывать окно просмотра. В масштабах, над которыми я работаю, кажется, что нет никакой разницы в скорости по сравнению с рисованием всего массива элементов, даже на нуле Пи.
Однако этот подход потребует дополнительных вычислений, чтобы определить, какойдиапазоны элементов должны были отображаться, если имелось какое-либо вращение сетки - эффективно растеризация моего собственного четырехугольника. Мне интересно услышать, если это разумный подход.
Есть некоторые другие варианты, такие как более экзотическая структура для разбиения самолета на подобласти, я думаю. Тем не менее, я не уверен, что все это действительно необходимо.
Спасибо!
Обратите внимание: Я не хочу обсуждать рисование плиток в фрагментном шейдере,Меня больше интересует правильный способ работы с вершинным шейдером, чем реальное решение описанной проблемы.