Stage 1: Отрисовка стен
Алгоритм художника
Сейчас стены отрисовываются в том порядке, в каком были описаны для уровня, и может получиться так, что фактически самая дальняя от камеры стена нарисуется ближе всех или наоборот. Чтобы вам было визуально проще обнаружить проблему, на демо ниже я разукрасил стены различными цветами.
2.5D Renderer
2D Renderer
Решение проблемы заключается в том, чтобы отсортировать стены по расстоянию от камеры перед их отрисовкой. Сначала рисуем дальние стены и только затем ближние. Кстати, такой алгоритм отрисовки называется Алгоритмом художника:
2.5D Renderer
2D Renderer
Управление камерой WASD
Однако у алгоритма художника есть один большой недостаток — он может делать ненужные отрисовки.
Представьте: вы находитесь перед стеной, причём стена полностью попадает в область видимости камеры, и больше на экране, кроме этой стены, ничего в конечном счёте не должно быть отрисовано. Одновременно с этим за этой стеной находится бесконечное количество стен на различном удалении от камеры. Согласно алгоритму художника, нам придётся отрисовать все эти стены от дальней к ближней, хотя в действительности необходима только одна. Мы делаем лишние отрисовки. Другими словами, может получиться так, что мы покрасим некоторые пиксели на экране несколько раз.