|
|
DWORD CParticleSystem::ColorLerp(DWORD color1,DWORD color2,float fWeight)
{
DWORD Weight=(BYTE)(fWeight*0x100); //后面100转换成十进制是256
if(fWeight<=0.0f) return color1;
else if(fWeight>=1) return color2;
else
{
DWORD IWeight= Weight^0xFF;
DWORD dwTemp=0;
dwTemp =(((0xFF00FF00&color1)>>8)*IWeight+
((0xFF00FF00&color2)>>8)*Weight
)&0xFF00FF00;
dwTemp|=(((0x00FF00FF&color1)*IWeight+
(0x00FF00FF&color2)*Weight
)&0xFF00FF00)>>8;
return dwTemp;
}
}
这里面做的是颜色混合吧.请问那位大侠指点
它是怎么样算的混合方式
尤其是这个混合代码是怎么做的:
dwTemp =(((0xFF00FF00&color1)>>8)*IWeight+
((0xFF00FF00&color2)>>8)*Weight
)&0xFF00FF00;
dwTemp|=(((0x00FF00FF&color1)*IWeight+
(0x00FF00FF&color2)*Weight
)&0xFF00FF00)>>8;
什么移位.相乘.与.怎么看也没明白;
请大侠指点...
|
|