Мы должны разработать сцену прокрутки / масштабирования в OpenGL ES на Android, очень похожую на уровень в Angry Birds, но больше похожую на уровень в World Of Goo.Больше похоже на последнее, так как мир будет состоять не из повторяющихся слоев, как в Angry Birds, а из большого изображения.Поскольку сцену нужно прокручивать / масштабировать и, следовательно, большая ее часть не будет видна, я задавался вопросом о наиболее эффективном способе реализации рендеринга, фокусируясь только на окружающей среде (т.е. не на объектах в мире, а на фоновых слоях).
Мы будем использовать ортогональную проекцию.
Первое, что приходит на ум, - это создание большого прямоугольника с 4 вершинами в мировом размере, которому сопоставлена фоновая текстура, и перевести / масштабироватьэто с помощью glTranslatef / glScalef.Однако мне было интересно, если OpenGL все еще визуализирует невидимую область за пределами границ экрана, поскольку она не отбраковывается (вы потеряете видимую область, так как имеется только 4 вершины).Следовательно, будет ли эффективнее подразделить этот прямоугольник, чтобы можно было отбраковать невидимые меньшие прямоугольники?
Другой вариант - создать прямоугольник с 4 вершинами, который заполнит экран, а затем переместить фон, отрегулировав его текстуру.координаты.Тем не менее, я думаю, что мы столкнемся с проблемами при построении больших миров, учитывая ограничение размера текстуры.Это похоже на хорошую реализацию для повторяющихся фонов, как у AngryBirds.
Может быть, есть другой способ ..?
Если у кого-то есть идея, как это можно сделать в AngryBirds / World of GooПожалуйста, поделитесь, как я хотел бы услышать.Кажется, они внедрили систему, которая позволяет плавно перемещать и масштабировать мир (WorldOfGoo = VERY).