ºÎ½Ç ´äº¯
50% ¹ÝÅõ¸íÀ̶ó´Â °ÍÀº R,G,B·Î ÀÌ·ç¾îÁø µÎ °¡ÁöÀÇ »öÀ» °¢ »ö±òº°·Î Æò±ÕÀ» ³»´Â °ÍÀ̶ó°í º¼ ¼ö ÀÖ½À´Ï´Ù. Æò±ÕÀ» ³»´Â ¹æ¹ýÀ» »ê¼öÀûÀÎ °Í°ú Àü»êÀûÀÎ °ÍÀ¸·Î ±¸ºÐÇÏ¸é ´ÙÀ½°ú °°½À´Ï´Ù.
1) avg = (a + b) / 2
2-1) avg = (a + b) >> 1;
2-2) avg = (a >> 1)+ (b >> 1); // ±Ù»ç°ª
¹®Á¦ÀÇ ½Ä¿¡¼ mask¿Í and ¿¬»êÀ» ÇÏ´Â ºÎºÐ¸¸ »©¸é 2-2°¡ µË´Ï´Ù.
*pDest = ((*pSour & MASK) >> 1) + ((*pDest & MASK) >> 1);
-> pDest^ := ((pSour^ and MASK)shr 1)+((pDest^ and MASK)shr 1);
±×·¸´Ù¸é mask°¡ ºÙÀº ÀÌÀ¯¸¸ ¼³¸íÇÏ¸é µÇ´Â °ÍÀÏÅÙµ¥¿ä, À§ÀÇ »ê¼úÀûÀÎ ½ÄÀº ´ÜÁö ÇϳªÀÇ ¼ö³¢¸® Æò±ÕÀ» ³¾ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ »öÀ» È¥ÇÕÇϱâ À§Çؼ ¿ì¸®°¡ Æò±ÕÀ» ±¸ÇØ¾ß ÇÏ´Â °ªÀº R, G, B ÃÑ 3°³ÀÔ´Ï´Ù. ±×¸®°í °í¼Ó 󸮸¦ À§ÇØ R, G, B·Î ³ª´©¾îÁø packedµÈ Çȼ¿ °ªÀ¸·Î ÇÑ ¹ø¿¡ Æò±ÕÀ» ±¸Çϱâ À§Çؼ mask°¡ ¾²ÀÎ °ÍÀÔ´Ï´Ù. ÇѸ¶µð·Î ¸»Çϸé mask´Â °¢ ºñÆ®¸¦ ±¸ºÐÇϱâ À§Çؼ ¸¸µé¾îÁø °ÍÀÔ´Ï´Ù.
maskÀÇ °ªÀ» º¸´Ï 1:5:5:5 ¸ðµå¿¡ ´ëÇÑ 50% ¹ÝÅõ¸í ¸¶½ºÅ©Àε¥ ±×°ÍÀ¸·Î ¿¹¸¦ µé¸é,
0RRR RRGG GGGB BBBB
$7BDE = 0111 1011 1101 1110
Á» ´õ ÀÌÇØÇϱ⠽±°Ô Çϸé,
0 RRRRR GGGGG BBBBB
$7BDE = 0 11110 11110 11110
ÀÌ·¸°Ô µË´Ï´Ù. ¿À¸¥ÂÊÀ¸·Î shiftÇϱâ Àü¿¡ shiftµÇ´Â ºñÆ®°¡ ´Ù¸¥ »öÀÇ ºñÆ®¸¦ ħ¹üÇÏÁö ¾Êµµ·Ï ¸¶Áö¸· ºñÆ®¸¦ 0À¸·Î ¸¸µé±â À§ÇÑ maskÀÔ´Ï´Ù. ±×¸®°í ±× °ªÀÌ $7BDE°¡ µË´Ï´Ù.