Что я могу сказать - он собрался, плюётся в косоль, запустился и... отказался реагировать на клаву. То ли дело именно в QT4.6 (4.5 mingw с gcc4.4 не признал), то ли вообще в QT под винду, но коды клавиш там другие.
А да, и он немой.
Если есть желающие подсобить с клавой и звуком - не откажусь.
added
Минус клава. Со звуком в винде пока непонятки. Юзаю winmm.dll (waveout). Под XP в виртуалбоксе тишина, под семёркой - треск, сквозь который пробивается звук.
Последний раз редактировалось SAM style; 10.12.2009 в 16:34.
Все любят гипножабу
Переделал вывод картинки через opengl-текстуру (на основе кода из dosbox).
Патч: http://pastebin.com/f3e2cbc46 или см. аттач.
Без этого у меня эмулятор тормозит по полной программе, проц на 100% загружен и тормоза дичайшие (карта mobility radeon hd, 3d-драйвер - экспериментальный опенсорсный - пакет "mesa-dri-drivers-experimental" в Fedora 12). С этим патчем - загрузка CPU около 25%.
На NVidia что с патчем, что без - загрузка примерно одинаковая. Но если на ATI это спасает, будет так, если решится одна проблемка - крайне нежелательно иконку паузы растягивать вместе со всей текстурой. В полноэкранном режиме (будет в ближайшем срезе) выглядит вообще ужасно.
И с альфа-каналом я поспешил - GL работает с RGBA, тогда как QT с ARGB, сохранения скриншотов без лишнего гемороя не получится.
Все любят гипножабу
Да, это я на скорую руку сделал, исправлю.
Не очень понял смысл вышенаписанного, но погуглив немного, вот так вроде получилось:И с альфа-каналом я поспешил - GL работает с RGBA, тогда как QT с ARGB, сохранения скриншотов без лишнего гемороя не получится.
Код:diff --git a/emulwin.c b/emulwin.c index 6368e13..896e315 100644 --- a/emulwin.c +++ b/emulwin.c @@ -38,6 +38,8 @@ void EmulWindow::resizeGL(int width, int height) { swapBuffers(); glClear(GL_COLOR_BUFFER_BIT); glShadeModel(GL_FLAT); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); glDisable(GL_CULL_FACE);![]()
В частях работы с GL формат везде указан как GL_RGBA, т.е в порядке R,G,B,A. Чтобы сделать скриншот, я средствами QT делаю из тех же самых данных картинку и сохраняю её в заданном формате. Проблема в том, что QT формат RGBA при этом не понимает - ему нужен ARGB.
Пока что убрал альфа-канал вообще, RGB принимает и GL, и QT.
Кстати, update в первом посте.
Все любят гипножабу
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кстати, у меня эмуль все равно сильно тормозит (хотя теперь он по крайней мере стал хоть как-то юзабельным), дело уже не в отрисовке, emulframe() (без paintmain()) работает существенно больше 20 мс(25-70 где-то), пытаюсь разобраться чего там можно соптимизировать. Процессор Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (ноутбучный), система 64-битная.
Больше всего, похоже, кушает эмуляция BDI:
![]()
Судя по процентам, сам tick() жрёт добрую половину. Там отрисовывается картинка - эмулится ход луча. Процедурина вызывается ок.71680 раз за прерывание, и прорисовывает ок 143000 точек в памяти (а потом прорисованое успешно натягивается на окно), попутно "тикая" другими устройствами - ВГ93, мофоном (запусти ещё мофон на play - тоже скушает неслабо), звукогенератором...[COLOR="Silver"]
added
Если убрать вычисления цвета точки экрана и оставить только бордюр, потребление на моём домашнем компе падает с 28-30% до 16-17%.
added
Mastermind, попробуй версию от 14 декабря - как пойдёт? У меня на ноут ATI-шные дрова не легли, проверить не могу.
Последний раз редактировалось SAM style; 14.12.2009 в 02:40.
Все любят гипножабу
Вымученный новогодний упдатес. Переписан весь Z80, кое-что даже выправилось, а кое-что - наоборот
Все любят гипножабу
Ubuntu 9.10, при запуске выдает:
odept@odept-desktop:~/xpeccy$ ./xpeccy
./xpeccy: error while loading shared libraries: libQtOpenGL.so.4: cannot open shared object file: No such file or directory
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)