- Parece que no hay demasiadas opciones posibles para programar con el fb desde el espacio de usuario en un escritorio más allá de lo que mencionó. Esta podría ser una razón por la cual algunos de los documentos son tan antiguos. Mire este manual para los escritores de controladores de dispositivo y al que se hace referencia desde algunos documentos oficiales de Linux: www.linux-fbdev.org [barra inclinada] HOWTO [barra] index.html. No hace referencia a demasiadas interfaces ... aunque al observar el árbol fuente de Linux ofrece ejemplos de código más grandes.
- opentom.org [barra] Hardware_Framebuffer no es para un entorno de escritorio. Refuerza la metodología principal, pero parece evitar explicar todos los ingredientes necesarios para hacer el cambio de doble buffer "rápido" que menciona. Otro para un dispositivo diferente y que deja algunos detalles clave de almacenamiento en memoria intermedia es wiki.gp2x.org [barra] wiki [barra inclinada] Writing_to_the_framebuffer_device, aunque al menos sugiere que puede usar fb1 y fb0 para activar el doble buffering (en este dispositivo ... aunque para el escritorio, fb1 puede no ser posible o puede acceder a hardware diferente), que usar palabras clave volátiles puede ser apropiado, y que debemos prestar atención a la vsync.
- asm.sourceforge.net [slash] artículos [slash] fb.html rutinas de lenguaje de ensamblado que también aparecen (?) Para simplemente hacer lo básico de consultar, abrir, establecer algunos conceptos básicos, mmap, dibujar valores de píxeles para el almacenamiento y la copia en la memoria fb (supongo que se debe usar un ciclo corto de stosb, en lugar de un enfoque más largo).
- Tenga cuidado con 16 comentarios de bpp al buscar en el búfer de cuadros de Linux: Usé fbgrab y fb2png durante una sesión de X sin ningún resultado. Cada uno de ellos representaba una imagen que sugería una instantánea de la pantalla de mi escritorio como si la imagen del escritorio hubiera sido tomada usando una cámara muy mala, bajo el agua y luego sobreexpuesta en una habitación oscura. La imagen estaba completamente rota en color, tamaño y faltaba mucho detalle (salpicada de colores de píxeles que no pertenecían). Parece que/proc/sys en la computadora que utilicé (kernel nuevo con como mucho modificaciones menores ... de un derivado de PCLOS) afirman que fb0 usa 16 bpp, y la mayoría de las cosas que busqué en Google establecieron algo similar, pero los experimentos me llevaron a una conclusión muy diferente.Además de los resultados de estas dos fallas de las utilidades estándar de captura de búfer de cuadros (para las versiones contenidas en esta distribución) que pueden haber asumido 16 bits, tuve un resultado de prueba exitoso diferente al tratar los datos de píxeles del búfer de cuadros como 32 bits. Creé un archivo a partir de datos obtenidos a través de cat/dev/fb0. El tamaño del archivo terminó siendo 1920000. Luego escribí un pequeño programa en C para tratar de manipular esos datos (suponiendo que eran datos de píxeles en alguna codificación u otra). Finalmente me clavé, y el formato de píxeles coincidía exactamente con lo que había obtenido de X cuando me lo preguntaron (TrueColor RGB 8 bits, sin alfa pero con relleno de 32 bits). Observe otra pista: mi resolución de pantalla de 800x600 veces 4 bytes da exactamente 1920000. Los enfoques de 16 bits que probé inicialmente produjeron una imagen rota similar a fbgrap, por lo que no es como si no hubiera estado buscando los datos correctos. [Avíseme si quiere el código que usé para probar los datos. Básicamente acabo de leer todo el volcado de fb0 y luego escupirlo de vuelta al archivo, después de agregar un encabezado "P6 \ n800 600 \ n255 \ n" que crea el archivo PPM adecuado y mientras se repiten todos los píxeles que manipulan su orden o expandiéndolos, .. con el resultado final exitoso para mí de caer cada 4to byte y cambiar el primero y el tercero en cada unidad de 4 bytes. En resumen, convertí el aparente BGRA fb0 dump en un archivo RGB ppm. ppm puede verse con muchos visores de imágenes en Linux.]
- Puede que desee reconsiderar las razones para querer programar usando fb0 (esto también podría explicar por qué existen pocos ejemplos). Es posible que no consigas ningún rendimiento que valga la pena en comparación con X (esta fue mi experiencia, si es limitada) mientras que renuncias a los beneficios de usar X. Esta razón también podría explicar por qué existen pocos ejemplos de código.
- Tenga en cuenta que DirectFB no es fb. DirectFB últimamente ha recibido más amor que el anterior, ya que está más enfocado en la aceleración 3D más atractiva. Si quieres renderizar en una pantalla de escritorio lo más rápido posible sin aprovechar la aceleración de hardware en 3D (o incluso 2d hw de aceleración), entonces fb podría estar bien, pero no te dará mucho de lo que X no te da. X aparentemente usa fb, y la sobrecarga es probablemente insignificante en comparación con otros costos que su programa probablemente tendrá (no llame a X en un bucle cerrado, sino al final una vez que haya configurado todos los píxeles para el fotograma). Por otro lado, puede ser bueno jugar con fb como se describe en este comentario: Paint Pixels to Screen via Linux FrameBuffer
Eso es un poco general, ¿podría darme una dirección más específica para mirar? – NoMoreZealots