Перейти к содержимому

Draw Flush

Буфер команд у процессора не резиновый: 256 за раз, а всё лишнее пропадает молча

среднийНужно знать: Первый рисунок, Print Flush

drawflush — ровно то же, что printflush, только для картинки: отдаёт дисплею всё, что накопил draw, и чистит буфер в любом случае — не тот блок, снесённый блок, вообще не дисплей, разницы нет.

тик 0
Рисование0
rgb
Рисование1
rgb
a
Операция2
=
Операция3
=
Операция4
=
Операция5
=
Рисование6
xy
ширинавысота
Операция7
=
Прыжок -> 28
если
Вывод рисования9
Информация10
=
у
Стоп11
@counter0number
столбецnullnull
номерnullnull
строкаnullnull
xnullnull
ynullnull
командnullnull

Программа рисует сетку 16 на 16 — ровно 256 клеток, дисплей занят целиком. Нажмите «пуск» и посмотрите в правый верхний угол: двух клеток не хватает.

Мест в буфере тоже 256, но два из них уже заняты: clear и color — такие же команды, как и все прочие. Клеток поэтому нарисовано 254, и в переменной команд видно ровно это число мест, дошедших до дисплея.

Считать нужно все команды, а не только фигуры: clear, color, stroke и преобразования занимают места наравне с ними — в примере выше именно из-за них пропали две клетки. И надпись занимает столько мест, сколько в ней символов — каждая буква отдельной командой.

Буфер чистится после каждого drawflush, значит рисунок легко разбить:

draw clear 20 20 30
# …первые двести команд…
drawflush display1
# …следующие двести…
drawflush display1

Дисплей помнит нарисованное, поэтому вторая пачка ложится поверх первой, а не вместо неё. Единственное, чего так не сделать, — показать всё одновременно: между двумя отправками проходит время, и на быстром рисунке это видно.

тик 0
Рисование0
rgb
Вывод рисования1
Рисование2
rgb
Вывод рисования3
Стоп4
@counter0number

У буфера нет адреса: он один на процессор, и до drawflush неизвестно, кому его отдадут. Поэтому с двумя дисплеями порядок такой: нарисовали для первого — отдали первому, нарисовали для второго — отдали второму.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.