0 calificaciones0% encontró este documento útil (0 votos)
7 vistas1 página
Este documento describe las modificaciones realizadas para mejorar la visualización de imágenes en el framebuffer de Xinu. Se implementó una función para convertir colores de 16 a 32 bits. También se convirtieron las imágenes a formato de 2 bytes por píxel y se modificó la función drawImage3() para acceder correctamente a cada píxel de 2 bytes y enviar la posición correcta al framebuffer.
Este documento describe las modificaciones realizadas para mejorar la visualización de imágenes en el framebuffer de Xinu. Se implementó una función para convertir colores de 16 a 32 bits. También se convirtieron las imágenes a formato de 2 bytes por píxel y se modificó la función drawImage3() para acceder correctamente a cada píxel de 2 bytes y enviar la posición correcta al framebuffer.
Este documento describe las modificaciones realizadas para mejorar la visualización de imágenes en el framebuffer de Xinu. Se implementó una función para convertir colores de 16 a 32 bits. También se convirtieron las imágenes a formato de 2 bytes por píxel y se modificó la función drawImage3() para acceder correctamente a cada píxel de 2 bytes y enviar la posición correcta al framebuffer.
- En Xinu el framebuffer lee los colores por píxel con el formato 0x00RRGGBB
1) El conversor de 16bits a 32bits está ahora como rgb565_to_rgb888(u16 color) en
lib/vga.c a) Ingresa un color con el formato 0xrrrr rggg gggb bbbb b) Se obtienen por separado los colores r, g, b en su formato inicial, shifteando a izquierda y haciendo & lógico con los bits que corresponden c) Cambiamos el formato de cada color (2 bytes, 0-255) haciendo regla de tres (color * 255)/colorMaximo d) Armamos el color en el formato que lee Xinu shifteando según la posición
2) Las imágenes se convirtieron con la siguiente página:
https://www.digole.com/tools/PicturetoC_Hex_converter.php - El formato es 2 bytes/pixel:rrrr rggg gggb bbbb, "EDIM2" - El resultado está separado por bytes
3) drawImage3(...) en shell/galaga/mylib.c modificado
a) Como cada pixel ocupa 2 bytes del arreglo accedemos de a dos posiciones b) El color a convertir se arma con esos 2 bytes poniendo el primero por delante c) La posición que se envía estaba mal, el primer for es altura, y el de adentro es el ancho (los .c de las imágenes previos estaban mal convertidos)