Рендеринг больших прямоугольных плиточных изображений с OpenGL QuadTree

В настоящее время я проектирую и разрабатываю программу просмотра изображений на заказ для исключительно больших файлов изображений (иногда в гигапикселях). К счастью, они предоставляются в виде листов размером 256x256 в слоях с поэтапным разрешением, а затем при необходимости передаются в OpenGL.

Сами плитки управляются с помощью QuadTree, которое выглядит как мощное решение для изображений "почти в два раза". Однако, учитывая изображение с чрезвычайно широким соотношением сторон (например, 1 гигапиксель х 50000), модель начинает давать сбои с большим количеством нулевых плиток. Только один раз будет отображаться только ограниченное количество плиток.

Я использую Java 7 с LWJGL для предоставления контекста OpenGL.
Подходит ли решение QuadTree для этой проблемы или есть более эффективные альтернативы управлению данными?

Изменить: отредактировал заголовок, чтобы сделать его более понятным.

1 ответ

Квадратное дерево обеспечивает разделение по обеим координатным осям. Ваши проблемы имеют широкий аспект, поэтому одна из осей будет разделена.

У вас есть 2 решения:

  • Используйте BSP. Аналогичная концепция, но вместо разделения обоих координатных диапазонов вы выбираете один и делите его на 2. При этом вы можете разделять большой диапазон чаще, чем меньший.
  • Используйте сетку QuadTrees на верхнем уровне. Таким образом, вы разбиваете пространство на грубые квадраты, чтобы лучше использовать биты. Это также было предложено @Andreas в комментариях.
Другие вопросы по тегам