Сообщение от
TSL
1. Дофига ненужных копирований.
2. Ограничиваться 2мя плоскостями неудачное решение.
Хорошо, что 2 срамы. Я бы предложил строить изображение спрайтовой графики построчным рендерером в буфер одной строки (память альтеры), используя графику из 1й срамы. С использованием набора ФСМ и дисплейлиста. Где нибудь в памяти (ОЗУ, ФПРАМ) лежит лист, в котором описана последовательность вызова ФСМ в каждой строке. Типы ФСМ: тайлы (текстмод), спрайты (массив прямоугольных объектов), линейная графика. Для "линейной графики" в листе можно указать адрес чтения графики в данной строке, и необязательно один, можно указать 2 или более источников и смешивать их по альфе. Слоев при это может быть немеряно.
Сюда же влазит и зумскейл спрайтов, потому что можно рассчитать адреса чтения пикселей в указанной строке экрана и координате Х по координатам и параметрам зумротации спрайта.
Во 2й сраме можно заюзать блиттер, которым например рисовать графические примитивы или делать текстурный маппинг. Т.е. делать вещи, которые невозможно привести к ФСМ для одной строки, и которые работают в течении фрейма.
Вывод видео читает данные из 2й срамы, накладывает поверх них (или по 0му цвету, или по альфе) оверлейный буфер, построенный по дисплейлисту из графики 1й срамы (кстати, в буфере можно хранить 4 байта РГБ+альфа).