Есть тайловая карта.
В отдельном файле цветами мир поделен на сектора.
Могу нарисовать границу строго по тайлам, но это будет не красиво.
Поэтому хочется чтобы граница была как то так:
Также должна быть возможность выделения сектора с его подсветкой.
допустим это будет реализовано через отдельную текстуру x и y в которой будут определять цвет сектора на карте секторов, а цвет тот цвет в который надо его раскрасить.
Но как при такой реализации правильно закрасить половины тайлов с диагональной границей?
Может есть более удобный путь?
Посмотри тут Тайлинг ландшафтов
и рисуй границу в зависимости от типов соседних тайлов.
не, мне нужно не переходные тайлы, это все есть и работает.
нужно именно выделение секторов делящих некоторые тайлы пополам.
да, это все должно быть через шейдер...
треугольниками рисуй - любые формы, любая детализация
выделение сектора - определяешь в каком треугольнике координаты мыши
подсветка тоже - можно определить ребра, которые принадлежат границе
можешь заранее нарисованные текстуры выводить со 'странами', в альфа канале или в другой текстуре индекс страны
можно как SnUrik предложил + всякие вариации
анализировать соседей и накладывать поверх 'декоративные' границы/переходы между 2-я средами
_Wizard_, не совсем понимаю...
есть огромный мир 2048*4096 тайлов, который рисуется шейдером
рисовать 16 000 000 треугольников только для карты (2D) не очень хочется.
рисуй не переходный тайл, а границу, типо если 3 соседних тайла такого же типа как рассматриваемый - рисуешь диагонально разделенный тайл, если все соседние тайлы другого типа - рисуешь, к примеру, круг и т.д.
Leopard257
> _Wizard_, не совсем понимаю...
> есть огромный мир 2048*4096 тайлов, который рисуется шейдером
> рисовать 16 000 000 треугольников только для карты (2D) не очень хочется.
так он у тебя весь сразу виден и рисуется одним куском о_О?
тогда юзай сглаживание при выводе;
или отдельно храни многоугольники территорий и выводи поверх.
отдельно хранить тоже не удобно, сейчас камера стоит на месте, а масштабирование внутри шейдера происходит.
а многоугольники придется как то устанавливать и масштабировать отдельно.
секторов около 20000 на карте
Leopard257
у тебя треугольник не обязательно должен занимать 1 ячейку - тебе надо отрисовать области, вот и рисуй произвольный 2д/3д меш с нужной детализацией
отрисовывать карту целиком можно еще проще - 1 квад с текстурой мира + несколько детализирующих текстур/слоев/масок смешивания и т.д.
определяем над какой областью находимся аналитически - проверяешь на попадание в определенные треугольник + вякие оптимизации с quad деревьями
для подсветки границы можно заранее найти список внешних ребер
Тема в архиве.