(一):写在前面

在这一小节当中我主要是实现了对frame buffer的操作编程实现了将内存中的地址映射到逻辑地址空间然后对其内存进行操作包括在屏幕上画点画线画四边形填充四边形等然后再将数据映射到内存中进行显示这里的操作比较简单只要实现一个画点的操作就能以画点为基础实现各种操作

(二):画点的实现

首先我们在上一个小节中已经将内存中的地址映射到相应的逻辑地址内存空间就是使用mmap()函数有关与mmap()函数的参数,在网上一搜即可.

当获取到相应的地址之后我们就是根据相应地址的偏移量来对内存设置RGB和透明度的值

	uint32_t offset;
	uint8_t color[4];
	color[0] = b;
	color[1] = g;
	color[2] = r;
	color[3] = 0x0; //透明度
	
    //偏移量
	offset = p.y * pFbdev->fb_fix.line_length + 4 * p.x;
    

颜色设置完成之后我们需要将相应的值写入到内存当中在这里我们重新实现了一个函数那就是memcpy()函数.

//映射到内存
void fb_memcpy(void *addr,void *color,size_t len)
{
	memcpy(addr,color,len);
}

最后,我们使用该函数,将相应的内容映射到内存中.

//将操作映射到内存中
	fb_memcpy((void*)pFbdev->fb_mem + pFbdev->fb_mem_offset + offset,color,4);
    

(四):编译运行方法

在此次源码文件中我添加了一个Makefile文件所以如果要编译文件的话只需使用make命令就能将相应的test可执行文件编译出来编译完成之后我们使用ctrl+alt+f1进入到命令行界面然后进入到该目录运行就可看出相应的运行结果

(五):运行结果展示

下面是我使用手机拍摄的一张我的运行结果的照片.还是很漂亮的.

(六):后期规划

后面我打算能不能在命令行界面上实现一个图形化界面的库.这个难度其实是很大的,不过我觉着还是很有意思的.慢慢来吧,一个函数一个函数的写,一个函数一个函数的测试,脚踏实地.

(七):写在后面

昨天已经过去,明天还未来临,我们能做到只有活在当下.