CEDAR Logic Simulator

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Shaos wrote:bar, да ты крут :o
У меня есть студенческий опыт подобных развлечений. Была такая игрушка icmoria... Со сложной историей. Изначально она была написана парочкой студентов под VAX на древнем-древнем паскале, в котором, как я понимаю, даже речи не шло про указатели или (тем более!) динамическое выделение памяти. Потом другая группа энтузиастов игрушку доработала. Третья группа студентов, прогнала паскалевские сорцы через p2c, получив C'шный вариант. И, наконец, четвёртая группа (в действительности состоявшая лишь из одного человека), портировала результат в *nix на curses. Так вот по сравнению с тем C, C++ и wxWidgets -- это цветочки. =)
Lavr wrote:bar, а если всё получится - выложишь для наших линуксоидов, чтобы мы действительно
с ними на единую платформу перешли?
Выложу, естественно. Если получится...
С OpenGL всё не так просто оказывается. Они OpenGL используют, чтобы единожды отрисовать картинку в битмап, который затем многократно используется при выводе на экран. И чёй-то мне никак не удаётся найти, как подобное сделать средствами wxWidgets. А если без wxWidgets, то есть следуя девизу: ударим непортабельным кодом, по непортабельному коду... Я, честно говоря, не очень знаю, как это сделать, думаю надо втыкать в libGLU.so, там должно быть, наверное, что-нибудь типа создания опенгл контекста для рисования в ОЗУ.
Или может быть создать wxGLCanvas размерами 0px на 0px, ради получения нормального OpenGL контекста, после чего рисовать в offscreen framebuffer, и потом при помощи glReadPixels выуживать результат...
Или вообще выломать из кода OpenGL к чертям, и вместо того, чтобы описывать кодом как рисуется тот или иной элемент, задавать изображение файликом в каком-нибудь векторном формате.
Или может с опенгл перетащить этот cedar logic на библиотечку cairo, который заточен на 2D графику и на вывод в битмап... Хотя это лишние депендансы на венде.

Короче меня такое неожиданное использование OpenGL отправило с ступор. Мне надо подумать.
User avatar
Shaos
Admin
Posts: 23987
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Post by Shaos »

А если взять wxWidgets для SDL (я немного погуглил - народ вроде делал) и графику переделать с OpenGL на скрины SDL?

P.S. А код у них действительно безобразный - торомзилово жуткое, легче действительно всё с нуля переписать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Мне для начала очень хочется всё это запустить. Тогда можно будет исследовать дальше дебуггером. Проверяя таким образом свои предположения относительно того, как работает код.

А чтобы по простому запустить, надо идти тем же путём, повторяя шаг в шаг оригинальный код. Правда на *nix не удастся вдруг взять и вызвать что-нибудь класса GetDC, даже несмотря на то, что все библиотеки уже подгружены: все такие вызовы требуют указателя на структурку Display, а нет никакого способа выудить этот указатель из недр wxWidgets. Поэтому я склоняюсь к решению через жопу, в котором роль жопы будет играть второе соединение с X-сервером и соответственно вторая структурка Display, которая будет уже полностью в моём распоряжении.

А в перспективе, думаю, было бы лучше сделать иначе: понаделать FBO -- на каждый объект отрисовки по одному FBO, а результат рисования хранить в ОЗУ как OpenGL идентификатор текстуры. А потом просто текстурировать этими картинками. На более-менее современной видяшке с собственной RAM окажется ппц как быстрая отрисовка, поскольку даже нагружать DMA пересылкой битмапов не придётся, всё будет уже храниться в RAM видяхи. Можно будет достичь 100k fps. :rotate: Но существенней любого fps то, что придётся делать минимум изменений кода (по сравнению с другими вариантами), совершенно кроссплатформенно, и никаких извратов типа второго соединения с сервером, или отрисовка на видяшке, с пересылкой данных туда, потом выкачивания данных обратно на CPU, и потом снова закачивания в видяшку, чтобы получить конечную картинку на экране.
Правда тут один момент... FBO, если память мне не изменяет пойдёт только если в системе OpenGL версии >= 1.2. OGL 1.2 -- это древняя версия, но я чесслово не соображу что древнее: OpenGL 1.2 или Lavr'овская венда '98.
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Shaos wrote:P.S. А код у них действительно безобразный - торомзилово жуткое, легче действительно всё с нуля переписать...
С нуля переписывать надо тогда, когда есть чёткое понимание того, как работает оригинал. То есть надо именно что переписывать, но не писать с нуля. Тогда можно будет не отвлекаясь на стадию подробного проектирования программы, сразу схватиться за кодинг и получить офигенно красивый и продуманный код, которым мог бы гордиться даже Дейкстра, код к которому даже проф. Н. Вирт при всём желании не смог бы придраться.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 15:08
Location: Россия

Post by Lavr »

bar wrote:С нуля переписывать надо тогда, когда есть чёткое понимание того, как работает оригинал. То есть надо именно что переписывать, но не писать с нуля. Тогда можно будет не отвлекаясь на стадию подробного проектирования программы, сразу схватиться за кодинг и получить офигенно красивый и продуманный код, которым мог бы гордиться даже Дейкстра, код к которому даже проф. Н. Вирт при всём желании не смог бы придраться.
Воооо!!! А я здесь всё время повторяю:"Танцевать лучше от прототипа!"

И вообще - это стиль ВПК СССР - "мы это с3.14здим, разберём, посмотрим
и сделаем неподражаемый свой экземпляр
"... "к которому даже проф.
Н. Вирт при всём желании не смог бы придраться
." :D


PS. Меня немного смущает, Shaos вроде как называл как раз wxWidgets
кросплатформенной приблудой, а весь остальной код Виндавозно-ориентиованным... нет?


PPS. А за OpenGL 1.2 я вам ничего сказать не смогу... :( Потому как
Венда у меня такая правленная-патченная, что и не 98-я она вовсе,
а скорее уж 99_1/3 !
:lol:
iLavr
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Lavr wrote:PS. Меня немного смущает, Shaos вроде как называл как раз wxWidgets
кросплатформенной приблудой, а весь остальной код Виндавозно-ориентиованным... нет?
Да это ппц, а не кроссплатформенная приблуда. Читаем http://docs.wxwidgets.org/stable/wx_xrcoverview.html
XRC file format

Please see Technical Note 14 (docs/tech/tn0014.txt) in your wxWidgets distribution.
Идём в сорцы и читаем docs/tech/tn0014.txt:

Code: Select all

  +-------------------------------------------------------------------------+
  |                                                                         |
  |                           !!! CAUTION !!!                               |
  |              This document is incomplete and out of date.               |
  |                                                                         |
  |   Please see http://docs.wxwidgets.org/trunk/xrc_format.html for the    |
  |   authoritative version of XRC format specification.                    |
  |                                                                         |
  +-------------------------------------------------------------------------+
Идём на http://docs.wxwidgets.org/trunk/xrc_format.html и видим:
Documentation Not Found

The requested URL was not found on this server, and I couldn't find any pages like it in other versions of the manual, sorry.

You can try looking for the page yourself in one of the available manuals.
wxWidgets может кроссплатформенно послать на три буквы, сказать "накося, выкуси. член тебе, а не документацию." И нет чтобы просто сказать, что недокументировано и всё тут, так нет ведь, надо отправить к сорцам, чтобы я выудил бы эти сорцы из /usr/portage/distfiles, распаковал бы, заглянул внутрь, скопировал бы оттуда url в браузер... Что сложно было прям сразу воткнуть в документацию ссылку http://natribu.org/ ?
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Хех. Оно запустилось.

http://imglink.ru/show-image.php?id=f9f ... 616465d34f

Судя по квадратикам вместо буковок, и флуду в консоли об "invalid UTF-8 string passed", проблемы со строками-таки не решаются тупыми преобразованиями типов.
И, мне кажется, что не хватает какого-то виджета слева: там пустое место зачем-то.

Но это ещё не всё. Это чудо, оказывается, разбирая файл библиотеки полагается на то, что по достижению конца файла вылетит исключение. Исключение же, как ни странно, не вылетает, и поэтому программа навсегда залипает в вечном цикле.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 15:08
Location: Россия

Post by Lavr »

Ну так сравним:



Image

Нет меню и рисунков - слева... так? Остальное - похоже...
iLavr
User avatar
Shaos
Admin
Posts: 23987
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Post by Shaos »

угу - прогресс на лице :roll:

bar, сырцы дашь? я тоже попробую чегонить повтыкать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Shaos wrote:угу - прогресс на лице :roll:

bar, сырцы дашь? я тоже попробую чегонить повтыкать...
Дам конечно.
Со строками, я вроде разобрался вчера. И с недостающими виджетами: они не рисуются (или может рисуются, но размеры их равны нулю), если библиотека элементов пуста.
Но выяснил, что тот самописный XMLParser надо выкидывать. Я, просто чтобы разобраться в xml формате, немного иначе расставил там переносы строк, для повышения читабельности, и эта хрень стала вылетать по SIGSEGV при парсинге. Сегодня вечерком приделаю, что-нибудь типа TinyXML вместо XMLParser.cpp и выложу тогда сорцы куда-нибудь.
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Не, сегодня, я пожалуй не успею со всем этим разобраться. Вот собственно то, что есть на данный момент: http://narod.ru/disk/59391074001.d97b6e ... r.bz2.html

По идее должно собираться командой make. Насчёт работать -- это хз. Если через парсинг библиотеки прорвётся, то интерфейс отрисует. Но функциональности никакой.
bar
Senior
Posts: 185
Joined: 07 Aug 2006 17:18

Post by bar »

Парсинг библиотек я перетащил на tinyxml2. Теперь у меня в списочке слева не одна библиотека, а все, что есть в TestGates.lib :)
Завтра буду выяснять, почему лишь пять элементов отрисовываются (и то лишь в списке картинок), и почему эти пять элементов выглядят не как символы, несущие для посвящённых глубокий смысл, а как... Ну, я даже не знаю с чем сравнить. Чем-то напоминает результат выполнения команды "cat /dev/random", конечно в меньших масштабах и беззвучно.
User avatar
Shaos
Admin
Posts: 23987
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Post by Shaos »

bar, ты как относишься к git? можно это хозяйство загнать в github.com
p.s. ну или если ты больше любишь старый добрый cvs, то можно на sf.net залить...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23987
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: CEDAR Logic Simulator

Post by Shaos »

Lavr wrote:
Lavr wrote:CEDAR Logic Simulator Free Science & Engineering software
Везёт мне что-ли на симуляторы логики...
На работе у меня поюзали этот симулятор, и сказали, что очень даже неплохо.
Хотя в целом сыровато и не хватает некоторых привычных для симулятора фич...
А можно озвучить эти некоторые привычные для симулятора фичи, которых нехватает?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23987
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Post by Shaos »

bar wrote:Не, сегодня, я пожалуй не успею со всем этим разобраться. Вот собственно то, что есть на данный момент: http://narod.ru/disk/59391074001.d97b6e ... r.bz2.html

По идее должно собираться командой make. Насчёт работать -- это хз. Если через парсинг библиотеки прорвётся, то интерфейс отрисует. Но функциональности никакой.
Обломчик - с моим wx v2.4 оно не собирается, а wx v2.8 в мою слаку не ставится :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
Post Reply