Вторник, 12 Ноября 2024, 22:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
LibGDX 2D - Определение области видимости камеры?
biohazardoДата: Воскресенье, 26 Февраля 2017, 01:09 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет.

Рисую gnomoria-like мир из кучи блоков в 2d, использую OrthographicCamera. Встал вопрос о том, что надо рисовать только видимые блоки, но никак не могу понять, как определить области видимости камеры в мировых координатах.

SpriteBatch использует проекцию камеры, чтобы рисовать спрайты, 1 единица измерения мира равна 1 пикселю спрайта без масштабирования (то есть блок 32x32px на экране занимает тоже 32x32 в "мировых" единицах измерения при зуме камеры 1.0).
Как можно узнать область видимости камеры?
Пробовал использовать метод project, но это очень дорого в плане производительности (выполнял project для каждого столбца блоков, производительность просела с 30 фпс до 5ти)

Для интереса прилагаю картинку мира, который рисую (каждый блок - спрайт 32x32). Если кто-то знает разные интересные подходы, как эффективно рисовать такие блочные 2д миры, подскажите, буду благодарен!


web-developer, который хочет делать игры хотя-бы чуть-чуть

Сообщение отредактировал biohazardo - Воскресенье, 26 Февраля 2017, 01:20
DaemodДата: Пятница, 17 Марта 2017, 20:30 | Сообщение # 2
был не раз
Сейчас нет на сайте
А какая разница 2д или 3д? Мне кажется там и там нужно по frustum.
Код

boolean isVisibleSprite(final Camera camera, GameSprite sprite){
//позиция и размер храниться в векторах.
return camera.frustrum.boundsIsFrustrum(sprite.getPosition(), sprite.getSize());
}

void render(){
for(GameSprite sprite : sprites){
   if(isVisibleSprite(ortCamera, sprite) batch.draw(sprite.getTexture(), sprite.pos.x,sprite.pos.y); // как то так.
}

}
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг