第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十)

续:

还是记录一下, BltFuncs.cpp中的函数作用:


CONVERT_32BPP_TO_16BPP 是将32bit的pixel转换成16bit的形式.

输入是DWORD

32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3则是不用的

为了不减少color的范围, 所以,都是取RGB8,8,8的高RGB5, 6, 5位, 然后将这16位构成一个pixel.


CONVERT_16BPP_TO_32BPP是将16bit的pixel转换成32bit的形式

输入是WORD

16BIT中, 分解出5, 6, 5

然后, 将5, 6, 5 放入BYTE 0, 1, 2的字节中, 低位用0补(同样, 不能减少color的范围)


CONVERT_32BPP_TO_8BPP

CONVERT_32BPP_TO_4BPP

不是特别明白它的转换原理,

8PP,是从6级去考虑, 4PP,是从RGB所占的比例去考虑


CopyBits32_32

是从src copy 到 dst的函数

参数中除了src and dst还有需要copy的src表现中的矩形的个数,以及矩形的参数

所以, copy过程就是src中需要COPY的矩形的循环


GetPitches

GetRowStart

这两个函数, 分别是

第一个,得出每一个像素, 每一行的字节数

第二个,得出某一个矩形在表面的数据集中(pBits指向的一块内存, 一个像素一个像素, 一行一行地存在内存中)的起始位置

它们都针对ROTATION, 90,180,270,0的情况分别给出结果


CopyBitsGeneric

是在各行不同BIT的像素间COPY的函数, 相对CopyBits32_32具有通用行


BltBits

就是调用

CopyBits32_32或者CopyBitsGeneric进行COPY的函数




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值