Как работает туннель в NedoDemo 2:
Это мультиколор 640х200, атрибуты онли.
Естественно, я не шлёпаю каждый слой поверх другого. Строится сверху вниз (или снизу вверх, не важно).
Сначала создаём чистый буфер строки (цветом наружного слоя).
Компилим его в ld: push (оптимизированный, т.е. с минимумом ld - есть быстрая генерилка такого кода).
Потом начинаем перебирать строки (выводя их на экран этим ld: push'ем), пока не дойдём до места, где строка должна меняться.
Применяем все изменения в слоях на этой строке к буферу строки.
Опять компилим его в ld: push.
И так далее, пока не переберём все строки экрана.
Самое сложное - сгенерировать дату, по которой можно быстро находить переходы (ведь слои закрывают друг друга):
Сначала генерим всю геометрию всех слоёв.
Потом клипируем слои по x.
Потом создаём копии описателей слоёв в обратном порядке.
И клипируем всё по y.
В итоге получаем список вида y,x,ширина,цвет - по этому списку и работаем.
Стирание слоя - его шириной, но цветом предыдущего слоя.




Ответить с цитированием