«бесконечный» холст внутри opengl - PullRequest
1 голос
/ 01 июня 2009

Я использую opengl в редакторе тайламапа. Сохранение карты тайлов в формате GL_LUMINANCE32F, а затем ее изменение командами opengl.

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

Расширение или сжатие нужного холста не сложно, я могу легко создать другой холст, переместить на него старое содержимое холста и удалить старый холст. Вместо этого я понятия не имею, как можно заставить холст определить, когда он может сжаться, и насколько он может сжаться?

Итак, я должен определить, сколько строк и столбцов нулей у меня на краях холста.

Ответы [ 3 ]

2 голосов
/ 01 июня 2009

Сделай бесконечный холст из плиток.

1 голос
/ 01 июня 2009

Одна идея, которая приходит в голову, состоит в том, чтобы выяснить, насколько сильно сжиматься в направлениях X и Y по отдельности, с помощью следующего метода: визуализировать прямоугольное «поле», скажем, наполовину размера холста, и использовать ARB_ occlusion_query, чтобы выяснить, если пусто Если не пусто, разделите пополам и повторите (то есть выполните бинарный поиск, чтобы найти правильный размер). Для этого нужно выполнить log (N) шагов, где N - это размер (ширина или высота) холста, так что это довольно быстро, если делать это время от времени.

0 голосов
/ 01 июня 2009

Сокращение холста, как вы предлагаете, не будет полезным для художников. Часто они расширяют область, в которой они работают, просто чтобы иметь область для работы. Есть также спрайт-листы, в которых есть пустые области вокруг моделей, необходимые для работы в целевой программе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...