c++ linux user-interface framebuffer directfb

c++ - Cómo desarrollar una aplicación DirectFB sin salir del entorno X.11



linux user-interface (6)

Aquí hay un buen ejemplo con qemu y directFB:

Estoy tratando de desarrollar una aplicación GUI para una plataforma incrustada, sin ningún tipo de ventanas en absoluto y estoy haciendo eso con DirectFB, y se adapta muy bien a mis necesidades.

Como el desarrollo de embedded para el que no estoy tan poderoso, me gustaría intentar desarrollarlo en mi propio escritorio de Ubuntu. El problema es que Framebuffer está en conflicto con X.org, lo que hace que deje todo el escritorio y cierre X.org solo para ver el resultado de mis cambios.

¿Hay un buen simulador de framebuffer que se adapte a mis necesidades? Qt tiene uno, llamado QVFb, pero solo funciona para desarrollar aplicaciones Qt, y el back-end de DirectFB de VNC siempre falla.

Entonces, ¿alguna idea?


DirectFB tiene un back-end X11.

$ sudo apt-get install libdirectfb-extra # for Debian and Ubuntu, anyhow $ cat ~/.directfbrc system=x11 force-windowed

Además, DirectFB tiene un backend SDL, y SDL tiene un back-end X11. Además, SDL tiene un backend GGI, y GGI tiene un backend X. Eso es un poco tortuoso, pero debería funcionar :)

Lo probé con

$ SDL_VIDEODRIVER=directfb ffplay some_movie.avi

y obtuve una linda ventana de 640x480 con reproducción de medios y DirectFB manejando capas y entradas, así que estoy seguro de que esto funciona.


Las tres respuestas anteriores son buenas sugerencias. Sugiero probar la respuesta de ephemient porque es la más simple. Para más detalles sobre la configuración de su archivo .directfbrc, consulte "man directfbrc".

Otra posibilidad sería cambiar de X a otro terminal virtual (usando CTRL + ALT + F1), ejecutar su programa directfb y luego volver a X (usando CTRL + ALT + F7).


Llegué a utilizar la solución de ephemient para ejecutar aplicaciones DirectFB dentro de un entorno chroot (sistema de archivos de destino como cortesía de buildroot ) además de Xnest, un entorno X separado que se ejecuta en una ventana de la X actual.

$ Xnest -ac :1 & $ cd $TARGET_DIR # into the target file system root $ DISPLAY=:1 sudo chroot . usr/bin/df_neo

De esta forma puede asegurar que no solo su instalación de directfb es correcta, sino que también todas las dependencias requeridas están instaladas dentro del sistema de archivos chroot.


Puede desarrollar (es decir, editar y compilar) su aplicación en su escritorio Ubuntu y probar su aplicación en la plataforma incrustada en la que está destinado a ejecutarse.

Si la plataforma integrada admite la conexión de red, es posible que pueda reducir la longitud de su ciclo de compilación de compilación de edición ejecutando la aplicación directamente desde un recurso compartido de NFS.


Puede usar Moblin Image Creator para crear una imagen de disco de Moblin, que luego puede ejecutar dentro de una VM como QEMU . Luego puede probar su aplicación DirectFB dentro de la máquina virtual.