"게임 개발 테크닉" 이라는 책에서 나오는 건데요
16비트 그래픽의 32비트 알파 블렌딩 처리<<- 라고 써있는...

무슨 마스크 처리를 해서 2픽셀씩 한다는 것 같은데...
여지껏 해본 것 중에 가장 빠르더군요. 스왑같은 것도 없고...

그런데 문제는...멀쩡하게 안된다는 소리죠..ㅡㅡ;;

먼저 그 책에 소스를 보자면

#define _G_R_B 0x03e07c1f
#define R_B_G_ 0x7c1f03e0

        unsigned long p1,p2;
        unsigned long *s1, *s2, *d;
        int x,y;
        int address;
        int alpha2 = 32 - alpha;

        s1 = (unsigned long *)src1;
        s2 = (unsigned long *)src2;
        d  = (unsigned long *)dest;

        for(y=0; y<스크린Height; y++)
        {
                address = y*스크린Width/2;
                for(x=0; x<스크린Width/2; x++)
                {
                        p1 = s1[address+x];
                        p2 = s2[address+x];

                        d[address+x] = (( ((p1 & R_B_G_)>>5) * alpha +
                        ((p2&R_B_G_)>>5) * alpha2) & R_B_G_) |
                        ( (( ((p1&_G_R_B) * alpha)>>5) & _G_R_B) +
                        (( ((p2 & _G_R_B) * alpha2)>>5) & _G_R_B) );
                }
        }

이러하답니다. -_-;; (한글로 스크린이라 쓴건 타이핑 하기 귀찬아서..)
그리고 아래가 제 소스 입니다;;

        LData->alpha = 1;

        LData->alpha2 = 32-LData->alpha;
        LData->s1 = (unsigned long *)LData->BePaint[0].GetData();
        LData->s2 = (unsigned long *)LData->BePaint[1].GetData();
        LData->d = (unsigned long *)draw->GetScreen();

        for(WORD y=0; y<600; y++)
        {
                LData->address = y*800/2;
                for(WORD x=0; x<800/2; x++)
                {
                        LData->p1 = LData->s1[LData->address+x];
                        LData->p2 = LData->s2[LData->address+x];

                        LData->d[LData->address+x] = (( ((LData->p1 & _R_B_G)>>5) * LData->alpha +
                        ((LData->p2&_R_B_G)>>5) * LData->alpha2) & _R_B_G) |
                        ( (( ((LData->p1&_G_R_B) * LData->alpha)>>5) & _G_R_B) +
                        (( ((LData->p2 & _G_R_B) * LData->alpha2)>>5) & _G_R_B) );
                }
        }
LData는 걍 구조체일 뿐입니다~
그리고 저 소스를 실행 시킨 모습이 아래..(알파값 1, 0~32의 값을 주는거라고 써있길래..1을 줘봤음..
0을 주거나 32를 주면 그림은 멀쩡한데 색이 형광 연두색?? 같은 이상한 색이 전체적으로 깔림..)



어디가 문제인지..;;