再给你们看镂空,镂空和透明是2D游戏的绝招,而这两大函数老子都用mmx完美地操空了,MMX指令集的最大优点就是能把4笔char类型的数据同时进行加减乘移位等运算,从而成倍提升处理速度,镂空速度竟然能提升4倍,还有王法吗,还有法律吗?
void MMXHollow(void *des, void *src, int ColorKey, unsigned long Lenth) //镂空
{
unsigned __int64 ck = 0 , max = 0xffffffffffffffff;
_asm
{
mov eax, ColorKey
lea esi, ck
mov [esi], eax
mov [esi+4],eax
}
_asm
{
mov esi, src
mov edi, des
mov ecx, Lenth
movq mm7, ck
movq mm5, max
_startAddARGBLoop:
movq mm6, mm7
movq mm0, [edi+ecx*8-8] //mm0目标,mm1源
movq mm1, [esi+ecx*8-8]
pcmpeqd mm6, mm1
pand mm0, mm6
pxor mm6, mm5
pand mm1, mm6
por mm0, mm1
movq [edi+ecx*8-8], mm0
loop _startAddARGBLoop
EMMS
}
}