К сожалению, печать идет строго по знакострокам чтобы пристраиваться за лучом. Поэтому - никак нельзя.
Идея хорошая, но в мою структуру данных ландшафта вряд ли впишется. На досуге подумаю.
Насчет спрайтов.
Естественно, чтобы печать шла по знакострокам, нужно заполнить буфер спрайтов в формате приблизительно: адрес процедуры печати знакостроки спрайта, адрес экрана для вывода, адрес спрайта.
Есть 2 метода организации.
1) Один буфер. Как только знакострока кончается, то в буфере вместо адреса процедуры ставим 0.
В этом случае очень усложняется заполнение этого буфера, т.к. Нужно сначала спрайты разбить на объекты - знакоспрайты, потом их отсортировать по Y, потом уже заполнять последовательно буфер.
2) На каждую знакостроку - свой буфер спрайтов. В этом случае спрайты не нужно сортировать. А, последовательно перебирая их, разбивать на объекты-знакоспрайты, и записывать сразу в буфер нужной знакостроки. Недостаток метода 2) - в том, что нужно держать указатели на окончания всех 20 буферов и при записи в буфер соответственно корректировать эти указатели.
Сейчас подлодка печатается по методу 2). Получилось 1000 тактов на заполнение буфера. Много. Правда я еще не особо оптимизировал. Лодка имеет в высоту - 12 пикселей. В ширину - 5 знакомест. К тому же еще не применяется клиппинг.
На обработку мин уйдет больше времени, т.к. там еще нужно обсчитывать клиппинг.
Думаю мины можно не стирать, а печатать с маской поверх старого изображения, затирая маской соседние 2 пикселя справа и снизу.
У кого какие мысли? Может еще есть какие способы, методы?





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