А для кого в этом случае?Сообщение от maximk
Ай-яй-яй классику забываем. В ArtStudio есть. И называется кстати вполне виндовым термином - brush.Сообщение от maximk
А для кого в этом случае?Сообщение от maximk
Ай-яй-яй классику забываем. В ArtStudio есть. И называется кстати вполне виндовым термином - brush.Сообщение от maximk
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Блин Я имел ввиду, что не вижу пока оснований, полагать, что заливка с преобразованием координат будет быстрее, чем solid fill, да еще и байтами. Т.е. если ее реализовать на z80 то (скорее всего) результат будет неудовлетворительным по скорости. Но, это я так понимаю, может какой-нибудь мега-кодер покажет мастер класс и заставит меня еще раз засомневатьсяСообщение от icebear
Дык, виноват , но я не художник ни разу и даже не тянет. Поэтому прога впечатлила возможностями, но я реально не использовал.Сообщение от icebear
Тут, как говорится, "палка на двух концах" Либо делать топорно но быстро, либо красиво но медленно. С текстурами больше возможностей по "раскраске". Тольк вот как сделать такое на Спектруме не спрашивай, я уже 12 лет на ассемблере Z80 ничего не делал.Сообщение от maximk
Ну нарисовать свой шрифт в АртСтудио обязаность каждого спектрумиста.Сообщение от maximk
Поддерживаю. Именно так! Не даром дядька Кнут говорил:Сообщение от icebear
иPremature optimization is the root of all evil
Но, на спеке ввиду скромных (по современным мерками) вычислительных возможностей, вопрос этой самой оптимизации стоит остро. С другой стороны, есть некое удовлетворение, когда ты закодил нечто, что эффектно крутится даже не 3.5МГц, хотя внутри черт голову сломитIf you optimize everything, you will always be unhappy.
Зато если сделать быстрое текстурирование (даже с ограничениями) - это было бы революцией на Спектруме.Сообщение от maximk
Рекоменую посмотреть вот это http://zxaaa.untergrund.net/DEMO/35mhz.zip - часть из IRIS Ultrademo by Flash Inc.
да, это настоящий шедевр кода. было-бы здорово получить исходники, а еще лучше статью на эту тему.
Исходники есть на zxopensource.Сообщение от elfh
В IRIS (и в остальных вещах) делается довольно просто - рисуются многоугольные полигоны. Это не заливка через затравку (растеканием),
это отрисовка полигона по-линиям, сверху-вниз, между левой и правой стороной.
Текстурный паттерн не сдвигается побитно. Он "стоит" на экране. Благодаря этому при заливке полигона переносятся просто-напросто байты текстурного паттерна. Единственное только, это на ребрах откусываются байты паттерна по and-маске.
Текстуру и не надо двигать при заливке, иначе у ребер получится некрасиво.
Алгоритм очень прост.
Для того чтобы он работал, должны выполняться два условия - рисуемый многоугольник обязательно должен быть выпуклым.
(Кстати любые выпуклые геометрические тела дают выпуклую проекцию грани, т.е. при проекции многоугольник на экране будет заведомо выпуклым - это теорема геометрии)
И второе условие - вершины должны обходится по порядку, либо все по часовой стрелке, либо все против часовой стрелки.
Есть два буфера сторон. Для левой стороны многоугольника, и для правой стороны многоугольника. Они содержат X-координаты. Длина буферов нужна не менее высоты экрана.
Ищется самая верхняя вершина (min Y).
Ищется самая нижняя вершина (max Y).
Начиная от самой верхней найденной вершины, по-порядку, каждое ребро посылается в процедуру ScanConvert(x1, x2, y1, y2).
Итого - для треугольника будет три ребра и три раза будет вызываться ScanConvert. Для четырехугольника - четыре, и так далее...
Далее все просто - ScanConvert определяет левое это ребро или правое (правый буфер заполнять или левый) и шагая сверху-вниз по выбранному буферу (получается что как бы по "развертке" ребра на ось Y) пошагово вносит в буфер X-координаты ребра. Для этого я для каждого шага находил делением дельту. Вы можете составить более быстрый алгоритм. Как определить правое или левое это ребро легко догадаться, ибо сверху заданы два условия. Вырожденные ребра (чисто горизонтальные) не вносятся.
А дальше, когда буферы заполнены от самой верхней найденной Y-вершины и до самой нижней Y-вершины рисуем линии. Каждая линия от X-координаты левого буфера до X-координаты правого.
p.s.
сорцы Iris много лет уже можно взять на
http://opensourcezx.narod.ru
можете втч. ими воспользоваться.
смотреть нужно функции POLY3 или POLY4.
Alex Raider, Flash inc. 1992-1997 Новосибирск
спасибо.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)