Эффект "щлейфа" на OLED-дисплее 128*64
- Войдите на сайт для отправки комментариев
Втр, 10/04/2018 - 18:15
Добрый день.
Задание: сделать рожицу на дсиплее,которая будет кататься по экрану от координат привязанного к экрану акселерометра.
Вопрос: рожица катается, но оставляет за собой шлейф. Как его убрать?
Рожица отрисована в hex-массиве.
А за ней зарисовать фон забыли?
Нет,у меня на дисплее есть "игровое поле", по достижении его границ происходит "смерть_героя".
Или Вы о каком фоне?
том, которым игровое поле должно быть залито в отсутствии героя.
У меня нарисован квадрат, у него есть "смертельные" границы и отрисована рожица. Где я упустил момент с прорисовкой фона за персонажем и как это можно исправить, подскажите пожалуйста.
Смотри, какое дело: ты залил определённые пиксели (display.drawImage это и делает, строго говоря) определёнными цветами. И эти пиксели будут светиться своими цветами до посинения, понимаешь? Чтобы отрисовать персонаж в новой позиции - тебе надо, если по простому - взять рисунок с цветом фона экрана, отрисовать его в предыдущей позиции, затем отрисовать персонаж в новой позиции.
Не могли бы вы хотя бы примерно в виде кода это отобразить?
Смысл я понял,не очень понятен ряд дальнейших действий.
Смотри, какое дело: ты залил определённые пиксели (display.drawImage это и делает, строго говоря) определёнными цветами. И эти пиксели будут светиться своими цветами до посинения, понимаешь? Чтобы отрисовать персонаж в новой позиции - тебе надо, если по простому - взять рисунок с цветом фона экрана, отрисовать его в предыдущей позиции, затем отрисовать персонаж в новой позиции.
и, изображение будет мерцать.
может сразу рисовать готовое картинко на весь экран - с фоном и мордой?
или рисовать только те пиксели, которые изменились в отношении старой картинко?
и, изображение будет мерцать.
может сразу рисовать готовое картинко на весь экран - с фоном и мордой?
или рисовать только те пиксели, которые изменились в отношении старой картинко?
Не, ну епстессно, это так, навскидку. Ты мне предлагаешь за ТС всё сделать? Через эти тернии надо самому пройти, считаю. Крайний твой вопрос - самое годное решение, кстати, но - требует хороших навыков в той же математике.
Крайний твой вопрос - самое годное решение, кстати, но - требует хороших навыков в той же математике.
да какая там математика... проверенный старый способ - XOR рисуем . потом второй XOR по этому же пикселю - стираем
Прошу прощения, можно ли подробнее объяснить?
да какая там математика... проверенный старый способ - XOR рисуем . потом второй XOR по этому же пикселю - стираем
Математика там в том, чтобы не делать лишних операций по медленной шине ;) Если у тебя изменилось 5 пикселей - зачем гнать команды на изменение сотни пикселей? Я только об этом ;)
Так чтоб XOR делать надо иметь доступ к картинке на чтение. А это у OLED не всегда возможно, от шины зависит. Тогда приийдется промежуточный буфер в 1КБ держать, что плохо.
В таком случае правильно - хранить координаты и размер окна области морды с предыдущего шага. На следующем шаге определяем новую область морды. Дальше ту часть старой области, что не покрывается новой областю перерисовывать фоном. Ну и новую область морды прорисовать мордой ))
ПС. Опять таки помним что вывод не по 1 пикселю а сразу по 8. Специфика вобщем.