快速16位色alpha运算

很早之前看到别人写的24位色快速alpha运算,那个时候在做symbian,就按照算法写了一个12位色的快速alpha运算。前些年开始做BREW,又写了个16位色的alpha运算,经过不少项目的测试,在效率和效果上完全可以达到应用的要求。在BREW上执行的非常快。

       uint32 front = (((uint32)(*psrc)) & 0xF81F) | (( ((uint32)(*psrc)) & (~( 0xF81F )) ) < < 16);
       uint32 back = (((uint32)(*pdes)) & 0xF81F) | (( ((uint32)(*pdes)) & (~(0xF81F)) ) << 16);
	   uint32 result = ( ( back << 5 ) + ( front - back ) * alpha ) >> 5;
	   *pdes = ( uint16 )((result & 0xF81F) | ( ( (result>>16) & (~(0xF81F ) ) ) ) );
       

alpha的范围在0~31之间。颜色格式为R5G6B5。使用一次乘法。

发布者

rix

如果连自己都不爱自己,哪还有谁来爱你