30天自制操作系统(第十天)

本文详细介绍了自制操作系统中图层的管理,包括单个图层和多个图层的概念,以及图层管理的各个函数,如shtctl_init、sheet_alloc等。还探讨了优化图层叠加处理的方法,通过限制刷新范围减少对VRAM的写入次数,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、叠加处理

1、单个图层

如果使用过PS应该很容易理解图层的概念,以下是对图层的结构体定义:

struct SHEET {
	unsigned char *buf;
	int bxsize, bysize, vx0, vy0, col_inv, height, flags;
};

*buf:这是一个指针,指向图层上要显示内容

bxsize:图层的x大小

bysize:图层的y大小(bxsize*bysize就是图层的整体大小)

vx0:图层在背景画面的相对位置x

vy0:图层在背景画面的相对位置y(图层在背景画面上的位置,从此位置开始显示)

col_inv:透明色色号

height:图层高度

flags:存放图层有关的各种设定信息

2、多个图层

上面是单个图层的定义,要实现多个图层的管理,需要创建一个图层的集合

struct SHTCTL {
	unsigned char *vram;
	int xsize, ysize, top;
	struct SHEET *sheets[MAX_SHEETS];
	struct SHEET sheets0[MAX_SHEETS];
};

*vram :这是一个指针,指向vram 。

xsize:屏幕分辨率x

ysize:屏幕分辨率y

top:最上面图层的高度

sheet0[]:准备的图层的全部信息,按照申请图层的先后存放,先申请的放前面

*sheets[]:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值