Alpha混合代码

WORD * pwBitmapDest, * pwBitmapSrc;
WORD * pwDest, * pwSrc;
DWORD dwColorDest, dwColorSrc;
LONG lPitchDest, lPitchSrc;

pwBitmapDest = (WORD*) ddsd2.lpSurface; // 锁定的目标表面
pwBitmapSrc = (WORD*) ddsd.lpSurface; // 锁定的源表面

lPitchDest = ddsd2.lPitch >> 1;
lPitchSrc = ddsd.lPitch >> 1;


for ( int i = 0; i < t2; i++)
{
pwSrc = pwBitmapSrc;
pwDest = pwBitmapDest;
for ( int j = 0; j < t1; j++ )
{
dwColorSrc = *pwSrc ;
if ( dwColorKey != dwColorSrc ) // 这个是过滤透明色的判断
{
// 下面基本都是位运算
dwColorDest = *pwDest;
// 565mode: 0000 0GGG GGG0 0000 | RRRR R000 000B BBBB
// 555mode: 0000 00GG GGG0 0000 | 0RRR RR00 000B BBBB
dwColorSrc = (dwColorSrc<<16 | dwColorSrc) & m_dwGRBBitMask ;
dwColorDest = (dwColorDest<<16 | dwColorDest) & m_dwGRBBitMask ;

// ( D * (32-a) + S * a ) / 32
// = (S-D) * a / 32 + D
dwColorDest = ((((dwColorSrc-dwColorDest) * dwAlpha) >> 5) + dwColorDest) &
m_dwGRBBitMask;
*pwDest = (WORD)( dwColorDest>>16 | dwColorDest );
}
pwSrc++;
pwDest++;
}
pwBitmapSrc += lPitchSrc;
pwBitmapDest += lPitchDest;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值