续:
还是记录一下, 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的函数
第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十),布布扣,bubuko.com