¿Puedo escribir bytes directamente en la memoria de video en Linux, o hay una mejor manera de obtener datos en la pantalla?
graphics framebuffer (1)
Le estoy enseñando a mi hijo a programar "de la manera correcta / difícil", así que comenzamos con C, como hombres reales :)
Imprimir texto en la consola es divertido, pero aún recuerdo la emoción de cambiar mi viejo i386 al modo 320x200x256 y dibujar algunos rectángulos de colores ... en el día fue tan fácil como invocar int 10h
y luego simplemente escribe bytes a [A000:0000]
para dibujar píxeles en la pantalla.
Sin embargo, con el Linux moderno, tal acceso de bajo nivel al hardware parece ser más complicado (por razones obvias). He analizado brevemente mmap
-ing /dev/fd0
como se describe here . Resulta que no hay ningún dispositivo /dev/fb0
en mi Ubuntu 13.04. También svgalib
uso de svgalib
; sin embargo, su código de ejemplo no muestra nada en mi monitor.
Entonces, la pregunta es: ¿hay formas fáciles de obtener acceso directo a la memoria de video en Linux moderno que no requiera mucha configuración del sistema y código repetitivo? No tiene que ser un acceso a pantalla completa: abrir una ventana X y dibujar píxeles también estaría bien, siempre y cuando se haga escribiendo los datos directamente en la memoria.
En lugar de acceder directamente a la memoria de la pantalla (que está llena de más escollos de los que se puede creer), debe considerar el uso de Simple DirectMedia Layer para sus gráficos (¡y mucho más!) Y dejar que el sistema operativo se encargue de dibujarla en la pantalla.