Если приложение не консольное, то ничего и не увидишь- после запуска родительский процесс не ждет завершения дочернего, потому и потоки не перехватываются. Надо собирать с поддержкой консоли. Тогда будет счастье.
Вид для печати
Что я могу сказать - он собрался, плюётся в косоль, запустился и... отказался реагировать на клаву. То ли дело именно в QT4.6 (4.5 mingw с gcc4.4 не признал), то ли вообще в QT под винду, но коды клавиш там другие.
А да, и он немой. :)
Если есть желающие подсобить с клавой и звуком - не откажусь.
added
Минус клава. Со звуком в винде пока непонятки. Юзаю winmm.dll (waveout). Под XP в виртуалбоксе тишина, под семёркой - треск, сквозь который пробивается звук.
Переделал вывод картинки через 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, сохранения скриншотов без лишнего гемороя не получится.
http://img704.imageshack_.us/img704/...alphablend.pngКод: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 в первом посте.
Кстати, у меня эмуль все равно сильно тормозит (хотя теперь он по крайней мере стал хоть как-то юзабельным), дело уже не в отрисовке, emulframe() (без paintmain()) работает существенно больше 20 мс :( (25-70 где-то), пытаюсь разобраться чего там можно соптимизировать. Процессор Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (ноутбучный), система 64-битная.
Больше всего, похоже, кушает эмуляция BDI:
http://img15.imageshack_.us/img15/54...ycallgrind.png
Судя по процентам, сам tick() жрёт добрую половину. Там отрисовывается картинка - эмулится ход луча. Процедурина вызывается ок.71680 раз за прерывание, и прорисовывает ок 143000 точек в памяти (а потом прорисованое успешно натягивается на окно), попутно "тикая" другими устройствами - ВГ93, мофоном (запусти ещё мофон на play - тоже скушает неслабо), звукогенератором...[COLOR="Silver"]
added
Если убрать вычисления цвета точки экрана и оставить только бордюр, потребление на моём домашнем компе падает с 28-30% до 16-17%.
added
Mastermind, попробуй версию от 14 декабря - как пойдёт? У меня на ноут ATI-шные дрова не легли, проверить не могу.
Вымученный новогодний упдатес. Переписан весь 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