Программирование для AZБК
Сейчас рассмотрим примеры использования блиттера:
Работа с блиттером
в этой теме я выложил перепакованное качественно видео с примерами работы с графикой напрямую.
№0.Заполнение константой - команда 0.
заполнение экрана разноцветными прямоугольниками - проверка работы команды копирования константы. Каждый прямоугольник рисуется во время гашения экрана (по VSYNC ). Скорость вывода прямоугольников соответствует частоте кадров - 60Hz.
№1. Копирование спрайта безусловное - команда 11.
производится копирование спрайта хранящегося линейно в прямоугольную позицию в экране. Коррекция палитры не проводилась, соответственно изображение не такое красивое как могло бы быть. В дальнейших примерах это будет исправлено и показано как это делать.
№2. Копирование спрайта c наложением по SRC - команда 21.
производится копирование спрайта хранящегося линейно в позицию в экране с наложением. Наложение идет только по контуру самого спрайта. Коррекция палитры не проводилась, соответственно изображение не такое красивое как могло бы быть. В дальнейших примерах это будет исправлено и показано как это делать.
№3. Копирование спрайта безусловное, с анимацией и движением (команды 0 и 11)
сначала тут идет отчистка экрана при помощи ручного запуска блиттера, затем по таймеру VSYNC идет отрисовка спрайта.
№4. Копирование спрайта с восстановлением фона - выполняется пакет команд 11 21 и 42:
сначала фон сохраняется в память, затем отрисовывается шарик, в следющей итерации фон восстанавливается, вычисляется новая позиция шарика, с нее сохраняется фон в память и отрисовывается шарик. Тут уже заметна реальная скорость блиттера - 3я команда по отрисовке немного не успевает выполнится за время гашения экрана и в верхних строках экрана шарик отрисован не весь - он еще не успел отрисоваться.
№5. Подкладывание "под фон" (команды 11 33 и 42). Это усложнение примера 4, тут тоже
сначала фон сохраняется в память, затем отрисовывается шарик, в следющей итерации фон восстанавливается, вычисляется новая позиция шарика, с нее сохраняется фон в память и отрисовывается шарик.
Отличие в математике наложения - тут один из кодов цвета фона объявлен как прозрачный и шарик накладывается только на него, остальные коды являются непрозрачными и наложения спрайта не происходит. Пример интересен простотой создания красивого эффекта и возможностью использовать иной код прозрачности.
(напомню - код прозрачности в схеме наложения слоев экрана всегда 0. )
№6. Подкладывание под фон (команды 11 33 и 42) + вращение. Это усложнение примера 4, тут тоже
сначала фон сохраняется в память, затем отрисовывается шарик, в следющей итерации фон восстанавливается, вычисляется новая позиция шарика, с нее сохраняется фон в память и отрисовывается шарик.
Отличие в математике наложения - тут один из кодов цвета фона объявлен как прозрачный и шарик накладывается только на него, остальные коды являются непрозрачными и наложения спрайта не происходит. Вращение реализуется переключением спрайта который "подкладывается".
№7. Подкладывание под фон (команды 11 33 и 42) + дрожание экрана - горизонтальный и вертикальные скроллинги. Это усложнение примера 4, тут тоже
сначала фон сохраняется в память, затем отрисовывается шарик, в следющей итерации фон восстанавливается, вычисляется новая позиция шарика, с нее сохраняется фон в память и отрисовывается шарик.
Отличие в математике наложения - тут один из кодов цвета фона объявлен как прозрачный и шарик накладывается только на него, остальные коды являются непрозрачными и наложения спрайта не происходит. Эффект дрожжания экрана реализуется при помощи регистров вертикального и горизонтального скроллинга.
№8 Заполнение константой - команда 0, выжимаем максимальную скорость!
Это усложнение примера 0 -заполнение экрана разноцветными прямоугольниками - проверка работы команды копирования константы; Основное отличие от примера 0 команды блиттера выполняются не по кадровому таймеру, а в ручном конвеерном запуске. Как следствие получаем максимальную скорость вывода прямоугольников.
№9 Применение команды 51 - подкладывание под фон (команды 11 33 и 42) + 51ая команда при столкновении с границами экрана. 51ая команда это заполнение константой по контуру спрайта, удобно для отображения столкновений или попаданий в какой-либо объект. В старых играх часто попадание так отмечалось.
№10. Подкладывание под фон (команды 11 33 и 42), но с применением координаты Y. Это технический пример использования в команде не адресного смещения, а координатного.




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