操作系统DC分析1

通过显示窗口过程来分析一下DC

要将内容显示在屏幕上,1、方法bios中断,2、写端口,3、写内存,其他(暂时不知道)

本次采用的写内存方法,

显卡有一个内存,只要将要显示的内容写入内存即可显示在屏幕上,

        显示窗口,即将窗口对应的内容写入显卡内存,因此窗口需要指向一个地址,该地址可以是内存也可以是显存。如果直接用显存好处是节省内存,减少复制时间的花费,缺点是容易产生闪烁;如果选用一块内存作缓冲,可以减少工作量,特别是窗口切换和移动时的工作量。显卡的内存是否可以给窗口单独使用,修改的时候不显示,待修改完后让显卡一次性显示,暂时还没找到方法。这好象是openGL 的内容。也是AGP和VGA的区别(猜的)

        还有一个疑问,窗口vram的地址是放在用户空间还是系统空间。放在系统内存好处是系统刷新窗口不用切换进程,坏处是系统空间只有2G,窗口多了是否够用,是放堆内,还是另外申请空间,还有建立DC时需切换至内核态;放在用户空间则释放的时候可以省略时间,一个进程本身窗口不会太多。

几个注意的地方

       1、 只有顶级窗口DC有内存,其他的子窗口与顶级窗口共享内存块,

       2、起点(x0,y0),窗口与DC的不同,顶级窗口起点为屏幕窗口的相对位置,子窗口为顶级窗口的相对位置,如果是孙子窗口,则需考虑父窗口的位置。

       3、窗口内存与DC内存指向同一块地址,除部分操作(移动,)其他窗口大部分操作都是通过DC操作,

      4、DC是与窗口同时建立还是在调用GetDC、GetWindowDC时建立。从这两个api及eleaseDC字面上理解,窗口建立时DC就是存在的,但个人觉得还是调用上述API建立好一点。这样ReleaseDC就是删除DC,但DeleteDC对应的是CreateDCA 与前面的删除不用的是 内存块是否释放的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻雀123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值