Важная информация

User Tag List

Страница 14 из 32 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 312

Тема: Программирование на ассемблере

  1. #131
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Надо как-то закруглить тему заливки. Сделал вариант с теневым буфером, который быстрее даже V13 ("спортивного"). Отъедает 8Кб, но зато это фиксированный размер для границ любой сложности, а буферы в V13 для очень сложных фигур могут занять половину памяти (тут я не учитываю стек, но его использование примерно одинаковое в разных версиях). По тактам (как я до сих пор сравнивал) в 4.2 раза медленнее корвета (V13 была в 4.5 раза медленнее). Но если считать правильно, по времени (тактовые и тормоза вектора и корвета различаются), то в 3.5 раза. Думаю это очень хороший результат при отсутствии "акселератора", тем более V24 заливает с маской и в 16 цветах, а не в 8. У теневого буфера есть еще потенциальное преимущество - маска может быть полноцветной и большой, произвольную картинку можно вписать в замкнутый контур. Еще одна особенность теневого буфера - двухстадийная работа, сначала латентная стадия заполнения, потом вывод на экран (в оценке быстродействия учитываю всю процедуру, обе стадии). Т.к. вторая стадия очень быстрая, то заливка производит (по крайней мере на меня) сильное впечатление. Минус - рефакторинг исходника (и выкладывание) отложен на неопределенное будущее. С другой стороны он особо никому не нужен, но надеюсь приятно будет знать, что на векторе есть быстрая заливка.
    Насчет области применения. В графическом редакторе я бы использовал V24, а в качестве процедуры графической библиотеки языка - V16.
    Вложения Вложения
    Последний раз редактировалось ivagor; 05.01.2019 в 10:18.

  2. #132
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,850
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    168 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня на Башкирии-2м в суперкалке тоже есть заливка (30 летней давности), при построении графиков, например круговая диаграмма. Там одна стадия, поэтому кажется не так быстро, хотя и сравнимо. Но там только 4 цвета (как при поиске маски, так и у шаблона).

  3. #133
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотрел C.COM (электронная таблица v1.5). Процедура заливки быстрая, но меня смутило отсутствие работы со стеком, она расчитана на заливку фигур с "загогулинами"? Электронная таблица для советских 8-биток выглядит хорошо, вроде для вектора (да и для многих других) с подобным интерфейсом нет.

  4. #134
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,850
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    168 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    расчитана на заливку фигур с "загогулинами"?
    Чтобы не быть голословным, залез в исходники. Похоже там действительно упрощённая версия, в электронной таблице только выпуклые фигуры, к тому же закрашивается только чёрная область. Закраска была бы быстрее, если бы не надо было постоянно переключать карту памяти для доступа к разным битовым планам.

    А вот в бейсике нормальная версия, но заливка одним цветом. Кстати, код заливки, который писал я, перенесли потом в ПЗУ биоса, потому что бейсик не влазил во внешнее ПЗУ на ученических машинах.

  5. #135
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотрел бейсиковский вариант, там совсем другое кино, в т.ч. и по скорости. Пока быструю заливку в бейсиках на 8080 видел только в корветовском, возможно это был фетиш авторов, не зря же они наворачивали хард под это дело. А в других бейсиках скорее всего экономили место, пиксельные заливки компактные, с байтовыми ускорениями разбухает.
    Цитата Сообщение от b2m Посмотреть сообщение
    Закраска была бы быстрее, если бы не надо было постоянно переключать карту памяти для доступа к разным битовым планам.
    Смотря с чем сравнивать. mvi+out - 7+10=17 тактов, если без тормозов. Или 8+12=20 было бы на векторе. У вектора аналогичный по занятию регистров вариант перехода между плоскотями mvi+add+mov - 8+4+8=20 тактов. "Быстрый" dad не всегда получается использовать, т.к. выигрыш от него съест сохранение/восстановление регистров. Причем на башкирии есть еще опции типа inr/dcr+out. Для цветной заливки удобнее или нечто ega/корвето-подобное или все биты в одном байте, а вектор или башкирия не очень удобны.

  6. #136
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Для цветной заливки удобнее или нечто ega/корвето-подобное или все биты в одном байте
    Подтверждение первого варианта - корвет, а второго - львов, там тоже очень быстрая заливка

  7. #136
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #137
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оффтоп, но раз уж начал здесь писать, то немножко дополню.
    В орионовском BASIC 1.2 интересный подход - заливка пиксельная, но развернули "строки" на 90 градусов и заполняют столбцами. Очень разумный вариант для компов со столбцовой организацией экрана, в векторовском бейсике тоже стоило так сделать (да и в Б2М думаю тоже). Правда такую процедуру не разгонишь добавлением байтовых операций, надо переделывать на строки.
    Довольно хороший вариант оказался в искровском бейсике, он между чемпионами и чисто пиксельными процедурами.

  9. #138
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,120
    Спасибо Благодарностей отдано 
    800
    Спасибо Благодарностей получено 
    661
    Поблагодарили
    406 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Я в этих делах полный ноль и вообще не очень понимаю, зачем нужен flood fill, так что извините если что. А можно делать заливку широкими мазками по границам байтов, а попиксельную оставить только для тех участков, где она нужна? То есть примерно так. Берем чанк 8х8. Если он пустой и внутри, закрашиваем быстро. Если он пересекается с границей области, откладываем точку затравки на потом. И так далее. Получается, что мы как бы сделали картинку в 1/64 разрешения, закрасили все в ней, потом перешли к полному размеру и подкрасили ступенчатость. Или это только лишнее усложнение?
    Больше игр нет

  10. #139
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,861
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,849
    Поблагодарили
    1,057 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    А можно делать заливку широкими мазками по границам байтов, а попиксельную оставить только для тех участков, где она нужна?
    Быстрые процедуры так и делают, но только все же чанки не 8x8, а 8x1. По моей умозрительной прикидке для компов со столбцовой организацией наверно можно было бы реализовать комбинацию быстрой заливки столбца 8xВысоту и остатки заливать пиксельно, но это будет заметное усложнение процедуры. А заливка линии комбинацией байтов и пикселей по скорости имхо почти не уступает и гораздо проще.

    - - - Добавлено - - -

    Цитата Сообщение от svofski Посмотреть сообщение
    зачем нужен flood fill
    Пропустил этот момент. Flood fill нормальные заливки не используют, только scanline, только хардкор. Хотя в рембрандте какой-то чудовищный невыносимо медленный алгоритм, может и flood fill.

  11. #140
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,120
    Спасибо Благодарностей отдано 
    800
    Спасибо Благодарностей получено 
    661
    Поблагодарили
    406 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне казалось, что то, что ты делаешь, это по сути бейсиковский пейнт. То есть flood fill. А scanline подразумевает развертку полигонов с закраской. Или есть какое-то другое понимание всего этого? Наверное я путаю терминологию.
    Больше игр нет

Страница 14 из 32 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 311
    Последнее: 12.02.2024, 17:12
  2. Ответов: 275
    Последнее: 16.12.2018, 23:01
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35
  5. Подпрограмма на ассемблере в памяти?
    от jimled в разделе Программирование
    Ответов: 1
    Последнее: 29.11.2009, 06:46

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •