Forth http://fforum.winglion.ru/ |
|
Quark C64 http://fforum.winglion.ru/viewtopic.php?f=23&t=3165 |
Страница 4 из 4 |
Автор: | VoidVolker [ Чт фев 21, 2019 00:29 ] |
Заголовок сообщения: | Re: Quark C64 |
Hishnik писал(а): В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы. Отлично, думаю вполне нормальное решение. Генерацию больших объемов данных можно и отложить. Да и при современных объемах и характеристиках ПК даже несколько мегабайт данных это ничтожно мало. Hishnik писал(а): Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта. Вот как. В таком случае, думаю виджет вполне подходящее решение. Тогда, возможно, имеет смысл сделать экран не один, а инстансом — т.е. вот есть экран по умолчанию, но если надо — то можно еще наклепать сколько надо и сделать их виджетами? Чтобы можно было сделать несколько виджетов и/или окон. Например при наличии двух мониторов можно будет на один вывести красивую 3D графику, а на втором разные элементы управления, виджеты или еще что-то нужное. Или для каждого экрана лучше просто делать отдельную форт-машину форком в отдельном потоке? |
Автор: | Hishnik [ Вс фев 24, 2019 18:44 ] | ||
Заголовок сообщения: | Re: Quark C64 | ||
Начал работать TextEdit. Загрузка, сохранение, подсчет строк и отправка i-й строки в форт-машину.
|
Автор: | Hishnik [ Пн июл 01, 2019 01:08 ] |
Заголовок сообщения: | Re: Quark C64 |
Немного предсказуемый, но все равно неприятный эффект - никакие ухищрения с QImage и отложенным обновлением отрисовки не помогают привести двумерную графику к приемлемому уровню производительности. Проблема в отсылке сообщений из Форта в Qt - каждый пиксель надо "обернуть" в сообщение, поместить в FIFO, а оттуда его заберет основной поток приложения. А это все существенно медленнее, чем просто писать в массив. Так что еще одно препятствие образовалось на пути к красивым приложениям... |
Автор: | Wlad [ Сб июл 06, 2019 12:11 ] |
Заголовок сообщения: | Re: Quark C64 |
Hishnik писал(а): ... каждый пиксель ... А - зачем каждый и - по одному? Или - задачей диктуется? |
Автор: | Hishnik [ Сб июл 06, 2019 21:04 ] |
Заголовок сообщения: | Re: Quark C64 |
В принципе, какого-то специального требования нет. Однако аналог объекта Canvas очень даже удобен. Достаточно просто ставить пиксели и другие объекты куда-то в буфер, а они оттуда сами забираются. Так сделано в Кварке, где вся графика рисуется без всякого знания о GDI со стороны программиста, просто буфер регулярно забирается движком Кварка и посылается на экран (с самостоятельным определением реального размера и прочего). По сравнение с написанием обработчика wm_paint это существенно проще, потому что при необходимости вывода чего-то другого в другой части программы уже не нужно думать, как это будет стыковаться с уже написанным для wm_paint кодом. Я уже посматриваю в сторону QImage.loadFromData, который может принимать на вход указатель на массив, содержащий графический файл. В принципе, нет ничего сложного в подготовке bmp в самой программе, достаточно сделать фиксированный заголовок. Чуть неудобнее то, что инициировать отрисовку этого bmp придется программисту же, каждый раз, когда он захочет увидеть на экране сделанные изменения. |
Автор: | Hishnik [ Пн июл 08, 2019 02:08 ] | ||
Заголовок сообщения: | Re: Quark C64 | ||
Уфф. Создание в памяти bmp, похоже, работает. И с учетом того, что момент обновления выбирается в программе, скорость вполне приличная. Остается еще один интересный вопрос - ведь с таким подходом "экранов" в программе становится много - столько, сколько будет создано QImage для вывода картинок.
|
Автор: | vikt [ Пн июл 08, 2019 15:49 ] |
Заголовок сообщения: | Re: Quark C64 |
Возможно не к месту, я использовал простой формат ppm https://ru.wikipedia.org/wiki/Portable_anymap он элементарно пишется и читается всем, чем угодно P6 #тут возможна строка комментариев это текстовый заголовок X Y 255 тут конец текстового заголовка, идут байты rgb в количестве X*Y |
Автор: | Hishnik [ Пн июл 08, 2019 21:46 ] |
Заголовок сообщения: | Re: Quark C64 |
vikt писал(а): Возможно не к месту, я использовал простой формат ppm https://ru.wikipedia.org/wiki/Portable_anymap он элементарно пишется и читается всем, чем угодно Действительно, интересная штука. Вот возможность записи/чтения в очевидной текстовой форме как раз и подкупает. Только боюсь, на обработку придется тратить больше времени. bmp все-таки самый простой вариант с точки зрения представления пикселов, причем достаточно фиксированного заголовка. Пока тестирую написанное, и скорость у bmp более или менее приемлемая. Понятно, что игровая графика при такой реализации получается с натяжкой, но для нее есть OpenGL. |
Автор: | vikt [ Пн июл 08, 2019 23:50 ] |
Заголовок сообщения: | Re: Quark C64 |
В P6 только заголовок текстовый, rgb - это обычные бинарные байты по байту на каждый цвет. |
Автор: | Hishnik [ Вт июл 09, 2019 00:33 ] |
Заголовок сообщения: | Re: Quark C64 |
Да, вот тут написано, что ppm поддерживается. https://doc.qt.io/qt-5/qimage.html#reading-and-writing-image-files В принципе да, получается просто еще одна разновидность двумерного массива пикселов (что и нужно), просто с другим заголовком. |
Автор: | Victor__v [ Сб сен 28, 2019 10:23 ] |
Заголовок сообщения: | Re: Quark C64 |
Ну так что? Есть 64-битный Кварк в виде DLL? Если есть, то какие конвенции вызозов поддерживаются. И может ли Кварк пересохранить себя в виде DLL c записью новых функций в секцию экспорта? |
Автор: | Hishnik [ Сб сен 28, 2019 17:32 ] |
Заголовок сообщения: | Re: Quark C64 |
Victor__v писал(а): Ну так что? Есть 64-битный Кварк в виде DLL? Нет, он такой пока не нужен. Он в виде forth.h и компилируется в составе проекта - например, с GUI. Соответственно, и dll создает пускай внешняя программа. |
Автор: | Hishnik [ Вт июн 16, 2020 04:39 ] | ||
Заголовок сообщения: | Re: Quark C64 | ||
QChart прошел по той же схеме подключения
|
Страница 4 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |