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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Быстрая буферизация/восстановление в области линии.

  1. #1
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрая буферизация/восстановление в области линии.

    Допустим мы рисуем линию на экран поверх изображения (SET, OR). Требуется нарисовать линию в другом месте, для этого фон нужно восcтановить, т.е. область за этой линией.

    Вижу способ, из двух процедур. Первая, читает координаты... и стоит массив стеком таблицу вида (word:address, byte:data).

    Вторая процедура этот массив восстанавливает (тут всё понятно).

    Вопрос как быстро сгенерить таблицу адресов без дублей?

    вх данные: L=X1, H=Y1, E=X2, D=X1 ; где X=(0..255), Y=(0..191)
    Последний раз редактировалось drbars; 14.08.2013 в 08:56.

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

  3. #2
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сравнивать текущее и пред-идущее значения.
    "наличие готового программного обеспечения для нового компьютера в наши дни имеет мало смысла."
    "Еще вопрос - почему на Спектруме большинство звуков на AY булькающие ? Как это исправить ?"
    (c) zst

  4. #3
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hacker VBI Посмотреть сообщение
    сравнивать текущее и пред-идущее значения.
    Это медленно будет. Нужен способ быстрее

    Если следующая точка в области байта предыдущей точки то в буфер не пишем.
    Последний раз редактировалось drbars; 14.08.2013 в 08:58.

  5. #4
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,260
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Если следующая точка в области байта предыдущей точки то в буфер не пишем.
    храним адрес последнего схороненного байта в BC (DE), перед выводом на экран очередной точки - сравниваем адреса текущий и предыдущий и делаем выводы - хороним новый байт или выводим точку:
    Код:
        sbc hl,bc
        jr z,.l1
    ;новый адрес
        add hl,bc
        ld b,h
        ld c,l
        ld a,(hl)
    ;тут буферим
        jr .l2
    .l1 add hl,bc
    .l2
    ;тут рисуем
    как-то так

  6. #5
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пожалуй быстрей всего было-бы строить не таблицу, а сразу подпрограмму восстановления. Типа:
    LD HL,adr
    LD (HL),n
    INC H
    LD (HL),n
    INC L
    LD (HL),n

    Ну и т.д.

    Но это всё зависит от самой процедуры вывода линии.
    (которую тоже можно-бы написать так, чтоб ряды точек выводила не по одной, а сразу байтом).

    Это всё конечно геморно, но полагаю что вполне возможно.
    Надо только очень долго и громко поскрипеть мозгами

  7. #6
    Veteran Аватар для lisica
    Регистрация
    19.12.2008
    Адрес
    Черкассы
    Сообщений
    1,573
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А почему бы эту линию не рисовать по XOR?
    Второй такой же вывод восстановил бы фон.
    Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
    Pentagon 128(1991г.)+YМ
    программатор 2732-27512.


  8. #7
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lisica Посмотреть сообщение
    А почему бы эту линию не рисовать по XOR?
    Второй такой же вывод восстановил бы фон.
    Два экрана. Фон. Медленно будет.

    ---------- Post added at 12:37 ---------- Previous post was at 12:34 ----------

    Цитата Сообщение от Destr Посмотреть сообщение
    Но это всё зависит от самой процедуры вывода линии.
    (которую тоже можно-бы написать так, чтоб ряды точек выводила не по одной, а сразу байтом).
    Практика показывает, что оптимально юзать SET n,(HL).
    Но идея с восстановлением неплохая. Хотя массив адресов и данных проще, и не сильно медленее.

    Цитата Сообщение от Destr Посмотреть сообщение
    Это всё конечно геморно, но полагаю что вполне возможно.
    Надо только очень долго и громко поскрипеть мозгами
    У меня уже их клинит Вижу тут расчет по методу Брезенхема...
    Последний раз редактировалось drbars; 14.08.2013 в 09:41.

  9. #8
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При переходе на следующий адрес при выводе пикселов, запоминать его и то, что в нем находится.

  10. #9
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    При переходе на следующий адрес при выводе пикселов, запоминать его и то, что в нем находится.
    То же самое говорю. если не равны - в буфер адресов стирания.
    "наличие готового программного обеспечения для нового компьютера в наши дни имеет мало смысла."
    "Еще вопрос - почему на Спектруме большинство звуков на AY булькающие ? Как это исправить ?"
    (c) zst

  11. #10
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,260
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Пожалуй быстрей всего было-бы строить не таблицу, а сразу подпрограмму восстановления
    имхо, время восстановления по таблице и время на построение п/п восстановления будет соизмеримо, а то и 2е больше потянет.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Мега быстрая загрузка с кассеты???
    от ALEXEY.GORDEEV в разделе Софт
    Ответов: 48
    Последнее: 12.05.2021, 01:48
  2. Быстрая и медленная память 128к
    от Hacker VBI в разделе Программирование
    Ответов: 21
    Последнее: 27.04.2013, 16:43
  3. Быстрая тригонометрия...
    от ALKO в разделе Программирование
    Ответов: 8
    Последнее: 25.01.2011, 00:29
  4. Ответов: 4
    Последнее: 16.06.2010, 20:37
  5. Ответов: 5
    Последнее: 24.05.2005, 11:13

Ваши права

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