Stage 2: Отрисовка секторов
Текущие результаты
Мы рассматриваем уровень как набор секторов — набора замнкутых многоугольников заданной высоты. Сектора могут быть соединенны между собой через общую стену, которую мы обозвали как портал. Порталы используются в отрисовке соседних секторов и формируют область в виде многоугольников.
На примерах уровней ранее мы реализовали поддержку только одного портала для одного текущего сектора. Чтобы расширить поддержку нескольких порталов для текущего сектора необходимо хранить массив областей для обрезки (клиппинга) и рекурсивно передавать его при отрисовке следующих секторов.
Получившийся отрисовщик более продвинутый по сравнению с тем, что мы получили на Stage 1, но у него также имеются свои ограничения и несовершенства: отрисовщику необходимо хранить множество многоугольников в памяти и вычислять их пересечение, мы по прежнему продолжаем сортировать стены, более того, мы ни разу не затронули вопросы производительности.
Помимо этих проблем у отрисовщика существует еще одна проблема, которая порождает интуицию о необходимости использования того самого алгоритма, благодаря которому прославились в прошлом разработчики DOOM — Binary Space Partition. Об этом мы поговорим в следующем большом шаге.