LINUX.ORG.RU

Графическое приложение без X-сервера

 


0

1

Всех приветствую.
Тут нарисовалась задачка по встройке в прибор монитора для отображения текущего состояния. Прибор на базе большого компа и линукса, но с маленьким диском. Так вот на этот экран хочется выводить табличку, ну и быть может простейшую графику, так же там тачскрин будет, на пару кнопок нажимать надо (прибор не будет в сети поэтому девиц с порнхаба отрисовывать не нужно). При этом ставить ради этого X-сервер как-то вот совсем влом. Какие есть сейчас возможности чтобы отрисовывать графическое приложение без иксов при этом используя какую нидь распространенную графическую библиотеку на с++?

Перемещено mono из talks

★★★★★

Последнее исправление: mono (всего исправлений: 1)
Ответ на: комментарий от inchallah

Ну во фреймбуффере можно наверное

А сможет QT сама в фреймбуфер рисовать?

другой вопрос - заведётся ли тачскрин?

Вот тут я как-то не вижу проблем. он же отдает координаты касания. Преобразовать их в координаты монитора и все.

yax123 ★★★★★
() автор топика

при этом используя какую нидь распространенную графическую библиотеку на с++?

Посмотри fbi, linux framebuffer image viewer.

pacify ★★★★★
()
Ответ на: комментарий от Rastafarra

ncurses

это запасной вариант

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Вот тут я как-то не вижу проблем. он же отдает координаты касания.

А ты уверен, что он их отдаёт ? У тебя драйвер к нему есть ? И если есть, ты уверен, что этот драйвер не только под иксы ?

А сможет QT сама в фреймбуфер рисовать?

Нет.

lenin386 ★★★★
()
Ответ на: комментарий от yax123

./app -platform linuxfb:fb=«/dev/fbX»

Правда я хз, есть ли в дефолтной сборке <дистрибутив name> такой platform plugin.

Я только на арм'е пускал, Qt естессно сам собирал.

Pentium02 ★★
()
Ответ на: комментарий от lenin386

А сможет QT сама в фреймбуфер рисовать?

Нет.

Не так категорично. Там есть поддержка directfb. Также как и в gtk.

sergej ★★★★★
()
Ответ на: комментарий от lenin386

А ты уверен, что он их отдаёт ? У тебя драйвер к нему есть ? И если есть, ты уверен, что этот драйвер не только под иксы ?
Нет.

Ваш ник, как синоним: «щас буду нести херню». Ну не разбираетесь в вопросе - пройдите мимо.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от Pentium02

Я только на арм'е пускал, Qt естессно сам собирал.

щас достал пример из qt: qt-everywhere-opensource-src-4.8.6/examples/qws/framebuffer скомпелял на целевой платформе (x64, cli, fb). И таки он отрисовал мне 3 разноцветных квадрата. Там конечно нужно ручками память мапить и т д. но это не проблема.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

а чем тебе не нравится? Он в том числе и для такого предназначен. Ну или можешь сам к видеодрайверу обращаться

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

а чем тебе не нравится? Он в том числе и для такого предназначен. Ну или можешь сам к видеодрайверу обращаться

тем что это лишняя сущность. qt, как оказалось к fb сама обращается и все делает. и зачем в этой связке вяленый?

Вы правда думали, что я не знаю, что такое «вяленый»?

yax123 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

directfb, равно как и fbdev, это тоже прослойка, но другая

fbdev и так есть по умолчанию в моем дистре. Зачем нужна еще одна неведомая фигня, которую придется еще отдельно ставить?

yax123 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

fbdev медленный.

Frame Buffer Performance test...
        Average:   2138 usecs
        Bandwidth: 2338.634 MByte/Sec
        Max. FPS:  467.727 fps

до-оооо, конечно!

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

directfb тоже обычно есть в дистрах и он кроме прочего умеет ещё и input с окошками, предоставляя нормальный API. Но если у тебя Qt, то пофиг.

sergej ★★★★★
()

Может проще запустить http-сервер, а текущее состояние пользователь на телефоне через браузер смотреть будет?

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Может проще запустить http-сервер, а текущее состояние пользователь на телефоне через браузер смотреть будет?

И каждому солдатику по ипхону7!!! Нет, ипхон и ипад аир!

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Ну да, а что в этом такого? Боишься в руки дать — прибей его гвоздями к прибору.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от tides

126056 frames in 5.0 seconds = 25211.182 FPS

точняк! доставайте все, у кого там длиннее?

я привел цифры, чтобы показать, что даже тормозной fb позволяет без напряга выводить на экран табличку. И даже если мы там запилим инерционную прокрутку, то все равно будет работать как у эпла, плавно и с тенями.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от lenin386

А сможет QT сама в фреймбуфер рисовать?

Нет.

Некомпетентного эникея ответ. Давай ты не будешь с умным видом говорить вещи, в которых совершенно не разбираешься, ок?

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от yax123

как его об этом попросить? или он сам сообразит?

Любое Qt 5 приложение может рисоваться прямиком в Linux Framebuffer.

Для этого необходимо запустить во фреймбуфферной консольке следующим образом:

sudo QT_QPA_PLATFORM=linuxfb qbittorrent
EXL ★★★★★
()
Ответ на: комментарий от yax123

Это уже сам смотри, без sudo у меня ругалось на такое

$ QT_QPA_PLATFORM=linuxfb qbittorrent 
Cannot open keyboard input device '/dev/input/event3': Permission denied
Failed to open keyboard device /dev/input/event3
Cannot open keyboard input device '/dev/input/event6': Permission denied
Failed to open keyboard device /dev/input/event6
Cannot open keyboard input device '/dev/input/event2': Permission denied
Failed to open keyboard device /dev/input/event2
Cannot open keyboard input device '/dev/input/event12': Permission denied
Failed to open keyboard device /dev/input/event12
Cannot open keyboard input device '/dev/input/event4': Permission denied
Failed to open keyboard device /dev/input/event4
Cannot open keyboard input device '/dev/input/event0': Permission denied
Failed to open keyboard device /dev/input/event0
Cannot open mouse input device /dev/input/event11 (Permission denied)
evdevmouse: Failed to open mouse device /dev/input/event11
evdevtouch: Cannot open input device /dev/input/event11 (Permission denied)
EXL ★★★★★
()
Ответ на: комментарий от EXL

evdevtouch: Cannot open input device /dev/input/event11 (Permission denied)

надо тогда себя еще в input добавить для полного щастья

yax123 ★★★★★
() автор топика
Ответ на: комментарий от sergej

см directfb

Он мёртв. Да и к чему лишняя сущность, когда Qt работает напрямую с linuxfb.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Ага, круто.

Я последний раз шашки брал в те времена когда это все называлась qtopia. Сейчас вроде все это загнулось, с другой стороны слышал, что это запили в обычную qt. Спасибо за ответ, ваш вариант лучше чем то, что было экзамплах.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Qtopia умерла, да. Сначала она мутировала Qt Extended, а потом некоторые классы оттуда мигрировали в Qt 4, который сейчас Everywhere.

Вот только в кутопии было гораздо больше классов, к примеру, работа с EXIF из коробки. В Qt вроде этого до сих пор нетути.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Кстати, а как собрать такую прогу на целевой платформе?

/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libSM.so.6, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libICE.so.6, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libXrender.so.1, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libfontconfig.so.1, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libXext.so.6, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-slackware-linux/bin/ld: warning: libX11.so.6, needed by /usr/lib64/qt/lib/libQtGui.so, not found (try using -rpath or -rpath-link)

/usr/lib64/qt/lib/libQtGui.so: undefined reference to `XSetTile'
/usr/lib64/qt/lib/libQtGui.so: undefined reference to `XReparentWindow'
/usr/lib64/qt/lib/libQtGui.so: undefined reference to `XSetIMValues'
/usr/lib64/qt/lib/libQtGui.so: undefined reference to `XConvertSelection'
...
накатить иксовые библы?

yax123 ★★★★★
() автор топика

Какие есть сейчас возможности чтобы отрисовывать графическое приложение без иксов при этом используя какую нидь распространенную графическую библиотеку на с++

QT Embedded это умеет. Выводит всё красиво, с окнами (если надо), мышкой и прочими плюшками, но без иксов и прямо во фреймбуффер.

DawnCaster ★★
()
Ответ на: комментарий от EXL

Любое Qt 5 приложение может рисоваться прямиком в Linux Framebuffer

[offtop] вах-вах. вот прям уважаю пацанов. даже как-то обидно - всякое гуано (полное гуано) находит деньги и живёт припеваючи, а вот реальные пацаны не шибко то жируют. [/offtop]

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.