sudo cp svgalib-1.4.3.orig/sharedlib/*so* /lib
测试:
官方例子:
#include
#include
int main(void)
{
vga_init();
vga_setmode(G320x200x256);
vga_setcolor(4);
vga_drawpixel(10, 10);
sleep(5);
vga_setmode(TEXT);
return EXIT_SUCCESS;
}
非常简单,没什么好说的。
我把svgalib应用在我前面用HZK16实现的电子书上,就可以在pc的tty终端显示电子书了。主要把之前对fbmem的put pixel改为 vga_drawpixel(),其他地方相应改一下即可。下面是我写的两个函数:
svga_clean()函数,代替原来的memset(fbmem, 0, screen_size);:
void svga_clean(void)
{
int x, y;
vga_setcolor(4);
for (x = 0; x < 320; x++)
for (y = 0; y < 200; y++)
vga_drawpixel(x, y);
}
crt_show_pixel(int x,int y,int color)函数代替原来的lcd_put_pixel():
void ctr_show_pixel(int x,int y,int color)
{
vga_setcolor(color); //4泛黄的纸,0黑色
vga_drawpixel(x, y);
}
lcd_init()函数中把对LCD的操去掉,直接设置几个分辨率参数即可:
int lcd_init(void)
{
//vga_setmode(G320x200x256);
var.xres = 320;
var.yres = 200;
line_width = var.xres * var.bits_per_pixel / 8;
pixel_width = var.bits_per_pixel / 8;
screen_size = var.xres * var.yres * var.bits_per_pixel / 8;
}
main()函数中添加对svga的一些初始化代码:
vga_init();
vga_setmode(G320x200x256);
gl_setpalettecolor(4, 0xE7>>2, 0xDB>>2, 0xB5>>2); /* 0xE7DBB5 */ /* 泛黄的纸 */
svga_clean();
编译时加上链接选项-lvga -lvgagl:
gcc -o svgatest main.c function.c -lvga -lvgagl
要在tty文本模式下执行程序,程序会进入图形模式来显示。
如其他地方有问题的话,适当修改一下即可。
使用svgalib在虚拟机tty终端下显示电子书效果:
对电子书有疑问的,可以参考我前面的电子书代码:https://blog.csdn.net/qq_22863733/article/details/80252304
对svgalib使用有疑问的可以参考svgalibtutorials:http://www.svgalib.org/jay/beginners_guide/beginners_guide.html