Im пытается написать игру в 2D с Sfml. Для этой игры мне нужен Lightengine и некоторый код, который может дать мне область мира, которая видна игроку. Поскольку обе проблемы очень хорошо сочетаются (являются принципиально одинаковыми), я хотел бы сразу решить обе проблемы. Мой мир будет загружен из файлов, в которых хитыbox объектов будут представлены как многоугольники. Теперь я написал код, который берет список полигонов и направление луча, следующего за мышью, и находит самое близкое пересечение с любым из этих полигонов. Следующим шагом было бы бросить лучи от игроков или огней. Положите по краям многоугольников, а лучи смещены на +0.000001 радиан, чтобы определить видимую область и вернуть ее в виде полигона.2D-видимость/свет - эффективное пересечение многоугольника
Проблема заключается в том, что мой алгоритм (он вычисляет внутреннее пересечение между двумя линиями с векторной математикой) слишком медленный. На моем очень хорошем ПК я получаю 100 кадров в секунду с 300 egdes и одним лучом.
Теперь я прочитал много статей в Интернете, но не смог найти одно из лучших решений. Но, насколько я читаю, это должно быть намного быстрее, чтобы вычислить пересечения с треугольниками.
Мой вопрос сейчас: было бы гораздо легче триангулировать многоугольники один раз при загрузке карты, а затем использовать пересечение лучей или треугольник, или есть лучший способ, который вы знаете, чтобы решить мою проблему? Я также слышал об ограниченных иературах Volumen, но я не знаю, как сильно это повлияет.
Im немного удивлены, сколько энергии потребляет мой алгоритм, так как он имеет только вычислить некоторые 2 мерных перекрестки ...
может захотеть задать этот вопрос по адресу http://gamedev.stackexchange.com/ – auburg
Хорошо, я поблагодарю вас за ваш намек :) – sro5h