В том-то и дело, что "сразу" в данном случае означает "с жесткой привязкой по времени". Отсюда следует (см. ниже), что паковать спрайты хотя бы за счет "дырок и обрезанных границ" толку мало (разве что несколько разгрузить шину для CPU). А вот блиттер легко пропускает ненужные точки и может использовать любую схему компрессии (например нужен объект в 17 цветов - тогда самый "редкий" цвет отделяем в отдельную картинку и потом накладываем на 16-цветный объект всего несколько таких точек, без лишних затрат времени; в случае спрайтового движка нужно убить два спрайта либо портить бэкграунд). И уж конечно "потом кидать на экран" буфер не надо, просто переключаем отображаемые буфера.Сообщение от Vladimir Kladov
А принципиальное отличие состоит в коренном ОГРАНИЧЕНИИ:
* Для спрайтовых движков - суммарное количество (включая прозрачные) обрабатываемых накладывающихся пикселей (даже не спрайтов как таковых, хотя от их кол-ва схема тоже разбухает) на каждую СТРОКУ.
* Для блиттера - суммарное количество обрабатываемых накладывающихся пикселей (легко делается без прозрачных, в зависимости от раскладки) на весь КАДР (считая бордюр и интервалы гашения!). К тому же в крайнем случае всегда можно частоту обновления игрового поля (не скорость самой игры!) понизить - мигать ничего не будет, в отличие от спрайтового движка.
Проблемы начнутся на следующих строчках, когда помимо кромки возникает шиииироооокая и непрозрачная середина. И если на нее истрачены все цвета - хоть ты тресни, а на сглаживание кромок не остается. Нужно использовать дополнительный спрайт. На самом деле весьма вероятная ситуация для любых обычных корявых объектов, а не только для гипотетических эллипсов.Сообщение от Vladimir Kladov
Суррогат.Сообщение от Vladimir Kladov
Проблема в том, что на любую отдельную строчку спрайта в общем случае потребуется своя собственная палитра. Сколько строк - столько уникальных палитр. На ОДИН спрайт. Сколько тогда потребуется внутренней памяти для палитр? Кстати эти палитры из-за прозрачности еще на треть (а то и вдвое) разбухнут. Дык их там еще и обновлять придется при любой анимации (не путать с простым движением) спрайта! А тянуть из внешней видеопамяти - ну так и есть, фактически второй спрайт. Иначе - подбирать внутренне зависимые жесткие раскраски (если уникальных не хватит) на каждый игровой эпизод без потери качества - ну, это для отпетых мазохистов.Сообщение от Vladimir Kladov
Даже так освобождается только 64 байта. Итого осталось 1216.Сообщение от Vladimir Kladov
Ничего не выйдет. Любой спрайтовый движок ОБЯЗАН обеспечить вывод строки "в худшем случае" в жестких временнЫх рамках - иначе это не спрайтовый движок, а фуфло. Сказано - "8 спрайтов в строке" - значит, 8! Сказано "в спрайте до 256 точек" - значит, будь ВСЕГДА готов обработать ВСЕ возможные 256*8=2048 пикселей. Плюс бэкграунды.Сообщение от Vladimir Kladov
Уфф.. я надеюсь, мне все-таки не придется объяснять - почему.
Просто = убого.Сообщение от Vladimir Kladov
Там - 16 на строку (но всего по 16 пикселей на каждый) в 16 цветах, на весь экран 4 палитры. Конкретно спрайтовые режимы у тридевятого не фонтан. А растровые - тормозные.Сообщение от Vladimir Kladov
Выгрызать и делать отдельно аналог одних только спрайтовых режимов особого смысла не вижу.
И что "громоздкого" в буфере? Как второй экран на Спеке-128 (можно еще и не полностью все окошко впечатывать). Масштабирование - конечно с тотальным сглаживанием (и вращением) подробно считать надо (если просто с одним прозрачным цветом - ерунда). Повороты на прямой угол и отражения - даром, пару счетчиков переименовать.Сообщение от Vladimir Kladov






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