°ÔÀÓ ·çÇÁ ÄÚµù
±âº» ÇÁ·Î±×·¥¿¡ ¡¸°ÔÀÓ ·çÇÁ¡¹¸¦ Ãß°¡ÇÕ´Ï´Ù.
°ÔÀÓÀº ±âº»ÀûÀ¸·Î ¡¸¹Ý¿µ±¸ÀÎ ·çÇÁ(?)¡¹·Î ±× 󸮸¦ ½ÇÇàÇÏ´Â °ÍÀÌ º¸ÆíÈ µÇ¾î ÀÖ½À´Ï´Ù.
À§¿Í °°ÀÌ ¿©·¯ °¡Áö 󸮸¦ ·çÇÁ ¾È¿¡¼ ½Ç½ÃÇÕ´Ï´Ù.
DirectX ÇÁ·Î±×·¥ÀÇ °æ¿ì´Â ±×°ÍÀ» µ¿ÀÛ½ÃŰ´Â ±â±â¸¶´Ù ¼º´ÉÀÌ ´Ù¸¥ PC·Î µ¿ÀÛÇϹǷÎ
¾î¶² PC³ª °°Àº ½ºÇǵå·Î ·çÇÁ Çϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
PC¿¡ µû¶ó¼ ij¸¯ÅͰ¡ »¡¸® ¿òÁ÷À̰í ÀûÀÇ ¿òÁ÷ÀÓµµ »¡¶óÁ® °ÔÀÓÀ» ÇÒ ¼ö ¾ø°Ô
µÇ´Â Çö»óÀÌ ³ªÅ¸³³´Ï´Ù.
¹Ý´ë·Î ´ÊÀº PC¶ó¸é¡¤¡¤¡¤´ÊÀº °ÔÀÓÀÌ µË´Ï´Ù.
±×·¯ÇÑ ±âÁ¾°£ÀÇ Â÷À̸¦ °¡´ÉÇÑ ÇÑ ¾ïÁ¦ÇÏ´Â °ÍÀº ´ç¿¬È÷ ÇÊ¿äÇÕ´Ï´Ù.
60ºÐÀÇ 1 ·çÇÁ
¡¸60ºÐÀÇ 1¡¹À̶ó°í ÇÏ´Â ·çÇÁ°¡ °ÔÀÓ¿¡¼´Â ÀÚÁÖ »ç¿ëµÇ°í ÀÖÀ¸¹Ç·Î ¿©±â¿¡¼µµ ±× ½ºÇǵå·Î ·çÇÁ Çϵµ·Ï ÇÕ´Ï´Ù.
¡¸60ºÐÀÇ 1¡¹À̶õ 60ºÐÀÇ 1ÃÊ¡¤¡¤¡¤1ÃÊ´Â ¡¸1000 ¹Ð¸® ¼¼ÄÁµå¡¹À̹ǷΠ¡¸16.66666 ¹Ð¸® ¼¼ÄÁµå¡¹¶ó°í ÇÏ´Â ±Ø´ÜÀÇ °£°ÝÀ¸·Î ·çÇÁ ÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù.
(1Ãʰ£¿¡ 60ȸ ·çÇÁ ÇÏ´Â 60ȸÀÇ È¸éÀÌ ¹¦È µÈ´Ù´Â ÀǹÌ)
ÄÄÇ»ÅÍ´Â ±²ÀåÈ÷ °í¼ÓÀ¸·Î °è»êÇϹǷΠ´ÙÀ½ ·çÇÁ 󸮱îÁö ½Ã°£ ¡¸16.66666 ¹Ð¸® ¼¼ÄÁµå¡¹ÀÇ »çÀÌ¿¡ ¿©·¯ °¡Áö ÀϵéÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÇÁ·Î±×·¥
±×·³ ±× ·çÇÁ´Â ¾î¶»°Ô ÇÁ·Î±×·¥ ÇÏ´Â °ÍÀϱî?
À̰Ϳ¡´Â ¡¸Á¤¹Ðµµ°¡ ³ôÀº ³»ºÎ ½Ã°è¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
³»ºÎ ½Ã°èÀÇ ½Ã°£À» ÃëµæÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÀÖÀ¸¹Ç·Î °£´ÜÇÑ Ã³¸®ÀÔ´Ï´Ù.
void loop(void)
{
if(timeGetTime() <prev_time) prev_time = timeGetTime();
double t = fabs(timeGetTime() - prev_time);
if(t >= MSPF)
{
do
{
t-=MSPF;
prev_time+=MSPF;
 
//󸮸¦ ±âÀÔÇÑ´Ù.
}
while(t>=MSPF);
}
}
ºñ°í
-prev_time
-MSPF ¸ÅÅ©·ÎÀÔ´Ï´Ù.¡¸16.66666¡¹ÀÇ °ªÀÌ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
¿ì¼± ó¸®ÀÇ ½ÃÀÛ¿¡¼ ¡¸timeGetTime ÇÔ¼ö¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
À̰ÍÀº PC ±âµ¿ºÎÅÍ °æ°ú½Ã°£À» »ó´çÈ÷ Á¤¹Ðµµ·Î ÃëµæÇÒ ¼ö ÀÖ´Â ÇÔ¼öÀÔ´Ï´Ù(¹Ð¸® ¼¼ÄÁµå ´ÜÀ§)
if(timeGetTime() < prev_time)prev_time = timeGetTime();
¡¸timeGetTime ÇÔ¼ö¡¹·Î ±âµ¿ºÎÅÍÀÇ °æ°ú½Ã°£À» ÃëµæÇØ ¡¸prev_time º¯¼ö¡¹¿Í ºñ±³ÇÕ´Ï´Ù.
(prev_time¿¡´Â ÀüȸÀÇ ·çÇÁ ½ÃÀÛ ½Ã°£ÀÌ º¸°üµË´Ï´Ù.)
À§ÀÇ Ã³¸®´Â ÃʱâÈÀÔ´Ï´Ù.
±âº»ÀûÀ¸·Î ¡¸prev_time º¯¼ö¡¹ÀÇ °ªÀÌ ¡¸timeGetTime ÇÔ¼ö¡¹·Î ÃëµæÇÏ´Â °æ°ú½Ã°£º¸´Ù ºü¸¦ ¼ö´Â ¾øÀ¸¹Ç·Î. . .
¡¸prev_time º¯¼ö¡¹°ªÀÇ °Ý³³ ÇѰ谡 µÇ¸é ÀÚ¸®¼ö ³ÑħÀÌ ¹ß»ýÇØ °ªÀÌ ¿¹±âÄ¡ ¾ÊÀº ÇüŰ¡ µÇ¾î ³¡³»¹Ç·Î.
±×·¸°Ô µÇ¾úÀ» °æ¿ì¿¡ ¡¸prev_time¡¹ÀÇ °ªÀ» ¼öÁ¤ÇÕ´Ï´Ù.
double t = fabs(timeGetTime() - prev_time);
º¯¼ö t¿¡ ¡¸ÇöÀç ½Ã°¢(±âµ¿ºÎÅÍ °æ°ú½Ã°£)¡¹°ú¡¸ÀüȸÀÇ ·çÇÁ ½Ã°£¡¹À» »¬¼ÀÀ» ÇÕ´Ï´Ù.
À̰ÍÀ¸·Î ÇöÀ硤¡¤¡¤ÀüÀÇ ·çÇÁºÎÅÍ ¾ó¸¶³ª ½Ã°£ÀÌ °æ°úÇß´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.
fabs ÇÔ¼ö´Â ¼Ò¼öÁ¡ °ªÀÇ Àý´ë °ªÀ» ¿ä±¸ÇÏ´Â ÇÔ¼ö
À§¿¡¼ °æ°ú½Ã°£À» ¾Ë ¼ö ÀÖ¾úÀ¸¹Ç·Î ´ÙÀ½ÀÇ if¹®À¸·Î ºÐ±âÇÕ´Ï´Ù.
if(t>=MSPF)
{
}
MSPF¿¡´Â 1ȸÀÇ ·çÇÁ·Î ÁÖ¾îÁö´Â ÃÖÀúÀÇ Ã³¸® ½Ã°£ÀÌ ¸ÅÅ©·Î¿¡ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
±×°Í°ú °æ°ú½Ã°£À» ºñ±³ÇÔÀ¸·Î °ÔÀÓÀÇ Ã³¸®¸¦ ½ÇÇàÇÏ´ÂÁö¸¦ ÆÇ´ÜÇÕ´Ï´Ù.
¡¸t¡¹°¡ ¡¸MSPF¡¹º¸´Ù ÀÛÀº °æ¿ì´Â ó¸® ½Ã°£ÀÌ ¡¸³²¾Æ ÀÖ´Ù¡¹ °ÍÀ¸·Î 󸮸¦ ¹þ¾î ³³´Ï´Ù.
¡¸MSPF¡¹º¸´Ù ¡¸t¡¹°¡ À§¶ó¸é ó¸® ½Ã°£À» Áö³ª°í ÀÖÀ¸¹Ç·Î °ÔÀÓ Ã³¸®ÀÎ
£û£ýÀÇ Ã³¸®¸¦ ½ÇÇàÇÕ´Ï´Ù.
¼Óµµ°¡ ´À¸° ¸Ó½ÅÀÇ Ã³¸®
´À¸° ¸Ó½Å¿¡¼µµ °¡´ÉÇÑ ÇÑ °°Àº 󸮸¦ ½Ç½ÃÇϱâ À§Çؼ ¡¸do while¡¹¸¦ »ç¿ëÇÑ Ã³¸®¸¦ ÇÕ´Ï´Ù.
¿©±â¼ ´À¸° ¸Ó½ÅÀº ¹Ýº¹ 󸮸¦ ÇÕ´Ï´Ù.
ºü¸¥ ¸Ó½ÅÀ¸·Î ½ÇÇàÇßÀ» °æ¿ì¡¤¡¤¡¤¡¤Ä³¸¯ÅÍ´Â 1µµÆ®¾¿ ¿òÁ÷À̰ÚÁö¸¸
´ÊÀº ¸Ó½ÅÀÇ °æ¿ì, ¿©±âÀÇ Ã³¸®·Î 1µµÆ®ÀÌ»ó¾¿ ¿òÁ÷ÀÔ´Ï´Ù.
(±×·¯³ª À̵¿¿¡ °É¸®´Â ½Ã°£Àº °ÅÀÇ °°°Ô µË´Ï´Ù.)
do
{
t-=MSPF;
prev_time+=MSPF;
 
//¹¦È 󸮿Ü(Ãæµ¹ ÆÇÁ¤µî)ÀÇ Ã³¸®¸¦ ±â¼ú
}
while(t>=MSPF);
À§ÀÇ ·çÇÁÀÇ È¸¼ö´Â ¡¸t¡¹ÀÇ °ª¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù.
´ÊÀº ¸Ó½ÅÀÇ °æ¿ì´Â ¡¸t¡¹ÀÇ °ªÀÌ Ä¿Áö¹Ç·Î ±× ¸¸Å, º¸´Ù ¸¹ÀÌ ¿©±â¼ ó¸®ÇØ¾ß ÇÕ´Ï´Ù.
(ºü¸¥ ¸Ó½ÅÀÇ °æ¿ì´Â ¿©±â¼ ¿©·¯¹ø ó¸®ÇÒ ÇÊ¿ä´Â ¾ø¾îÁø´Ù)
ÀÌ Ã³¸®¸¦ ½ÇÇàÇÏ´Â À§Ä¡
while(GetMessage(&msg, (
HWND)
NULL, 0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
ÇöÀç À§¿Í °°ÀÌ µÇ¾î ÀÖ´Â ¸Þ¼¼Áö ÇÔ¼ö¸¦ ºÎ¸£´Â WHILE¹®À» ÀÌÇÏ¿Í °°ÀÌ ÇÕ´Ï´Ù.
while(
TRUE)
{
if(PeekMessage(&msg, 0,0,0, PM_REMOVE))
{
if(msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
loop();
}
¡¸PeekMessage¡¹´Â ¾ÆÀ̵¹ ·çÇÁ¸¦ °¡´ÉÇÏ°Ô ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù
(ÇïÇÁ¿¡´Â »ó¼¼ÇÏ°Ô ³ª¿Í ÀÖÁö ¾ÊÁö¸¸, »ç¿ë¿¹´Â ½Ç·Á ÀÖ½À´Ï´Ù)
÷°¡
timeGetTime ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ¡¸winmm.lib¡¹¸¦ ¸µÅ©ÇØ¾ß ÇÕ´Ï´Ù.
¡¸ddraw.lib¡¹¸¦ ¸µÅ©ÇßÀ» ¶§¿Í °°ÀÌ ¼³Á¤ÀÇ ¸µÅ©¿¡ À̰ÍÀ» Ãß°¡ÇÕ´Ï´Ù.
¶Ç, fabs ÇÔ¼ö¸¦ »ç¿ëÇϱâ À§Çؼ´Â ¡¸math.h¡¹¸¦ óÀ½¿¡ ÀÎŬ·çµå ÇØ¾ß ÇÕ´Ï´Ù.
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
À̹ÌÁöÀÇ ¹¦È
°ÔÀÓ¿¡¼´Â À̹ÌÁöÀÇ Ç¥½Ã°¡ ÇʼöÀÔ´Ï´Ù.
À̹øÀº ±âº»ÀûÀÎ À̹ÌÁöÀÇ ¹¦È¸¦ ÇÕ´Ï´Ù.
¡¸ÇÁ¶óÀ̸Ӹ®¼ÆäÀ̽º¡¹ ¡¸¹é ¹öÆÛ¡¹¸¦ »ý¼º µÇ¾î ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.
À̹ÌÁö¸¦ ¹¦È ÇÏ·Á¸é ¿ì¼± À̹ÌÁö¿Í °°Àº »çÀÌÁîÀÇ ¼ÆäÀ̽º¸¦ »õ·Î ¸¸µé¾î
±× ¼ÆäÀ̽º¸¦ ¡¸¹é ¹öÆÛ¡¹·Î Àü¼Û ÇÏ´Â °ÍÀ¸·Î ½ÃÀ۵˴ϴÙ.
À§¿Í °°Àº È帧À¸·Î ¹¦È¸¦ ÇÕ´Ï´Ù.
±×¸²ÁßÀÇ ¡¸FLIP(Çø³)¡¹Àº ¹é ¹öÆÛ¿Í ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º¿Í ±³Ã¼ÇÔÀ¸·Î
ȸ鿡 ¹é ¹öÆÛÀÇ ³»¿ëÀÌ Ç¥½ÃµÇ°í ¹¦È°¡ ¹Ý¿µµË´Ï´Ù.
Çø³¿¡ ÀÇÇØ ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º´Â ¹é ¹öÆÛ°¡ µË´Ï´Ù.
¹é ¹öÆÛ´Â ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º°¡ µË´Ï´Ù.
À̹ÌÁö¿Í °°Àº »çÀÌÁîÀÇ ¼ÆäÀ̽º¸¦ »ý¼ºÇÑ´Ù
¼ÆäÀ̽ºÀÇ »ý¼ºÀÔ´Ï´Ù.
¿ì¼± À̹ÌÁö ·Îµå¿ë(ÀÌÇÏ£º½ºÇÁ¶óÀÌÆ®) ¼ÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
¹é ¹öÆÛ³ª ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽ºµî ¸ðµÎ °°µµ·Ï ÇÕ´Ï´Ù.
LPDIRECTDRAWSURFACE sprite=
NULL;
¡¸LPDIRECTDRAWSURFACE¡¹·Î Æ÷ÀÎÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù.
»ùÇÿ¡¼´Â ¡¸global.h¡¹¿¡¼ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù.
¼ÆäÀ̽º¸¦ ¸¸µå´Â ÇÔ¼ö
»ùÇÿ¡¼´Â ÀÌ Ã³¸®¸¦ ¡¸loadbmp ÇÔ¼ö¡¹¿¡¼ Çϰí ÀÖ½À´Ï´Ù.
ÀÌ ÇÔ¼ö´Â Àμö·Î ¼ÆäÀ̽º¸¦ ¸¸µé°í ½ÍÀº BMP À̹ÌÁöÀÇ ÆÄÀϸíÀ» °Ç³×ÁÖ¸é
±× ¼ÆäÀ̽º¸¦ »ý¼ºÇÕ´Ï´Ù.
À̹ÌÁö´Â ¿öÅ© ½ºÆäÀ̽º°¡ ÀÖ´Â Æú´õ¿¡ ³Ö¾î ÁÖ¼¼¿ä
ó¸®ÀÇ È帧
1.¼ÆäÀ̽º¸¦ ¸¸µé°í ½ÍÀº À̹ÌÁöÀÇ ÇÚµéÀ» ÃëµæÇÑ´Ù
2.À̹ÌÁö Á¤º¸¸¦ Ãëµæ(À̹ÌÁöÀÇ »çÀÌÁîµîÀ» Ãëµæ)
3.À̹ÌÁö Á¤º¸¿¡ µû¶ó ºó ¼ÆäÀ̽º¸¦ »ý¼º
4.À©µµ¿ì¿Í ȣȯÀÇ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ Ãëµæ
5.µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¿¡ À̹ÌÁö ÇÚµéÀ» ¿¬°áÇÑ´Ù.
6.¼ÆäÀ̽º¿¡ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®ÀÇ Á¤º¸(À̹ÌÁö)¸¦ Àü¼Û
7.ÇÚµéµîÀÇ ÇØ¹æ ó¸®
8.Åõ°ú Ä®¶ó ŰÀÇ ¼³Á¤
À§ÀÇ È帧À¸·Î À̹ÌÁöÀÇ ¼ÆäÀ̽º »ý¼ºÀº 󸮵˴ϴÙ.
1.À̹ÌÁöÀÇ ÇÚµé Ãëµæ
WINDOWS ÇÁ·Î±×·¥¿¡¼ Ŭ¶óÀÌ¾ðÆ® ¿µ¿ª¿¡ À̹ÌÁö¸¦ Ç¥½ÃÇÒ ¶§¿¡ ÇÚµéÀ» ÃëµæÇß½À´Ï´Ù.
±× ¶§¿Í °°ÀÌ À̹ÌÁöÀÇ ÇÚµéÀ» ÃëµæÇÕ´Ï´Ù.
¡¸LoadImage ÇÔ¼ö¡¹·Î ÇÚµéÀ» ÃëµæÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù
2.À̹ÌÁö Á¤º¸¸¦ ¾ò´Â´Ù
¿©±â¼ ÇÊ¿äÇÑ À̹ÌÁöÀÇ Á¤º¸´Â À̹ÌÁöÀÇ °¡·Î, ¼¼·ÎÀÇ Å©±âÀÔ´Ï´Ù.
ÀÌ Á¤º¸¸¦ ¾òÀ» ¼ö°¡ ÀÖÀ¸¸é ¾î¶°ÇÑ ¹æ¹ýµµ OKÀÔ´Ï´Ù.
¿©±â¼´Â ¡¸GetObject ÇÔ¼ö¡¹¸¦ »ç¿ë À̹ÌÁöÀÇ Á¤º¸¸¦ ÃëµæÇÕ´Ï´Ù.
»ùÇÿ¡¼´Â ¡¸
BITMAP ±¸Á¶Ã¼ bm¡¹¿¡ À̹ÌÁöÀÇ Á¤º¸°¡ °Ý³³µË´Ï´Ù.
3.À̹ÌÁö »çÀÌÁîÀÇ ¼ÆäÀ̽º¸¦ ¸Þ¸ð¸®¿¡ ¸¸µç´Ù
»ùÇÿ¡¼´Â ¡¸create_surface ÇÔ¼ö¡¹¸¦ ºÒ·¯ ¼ÆäÀ̽º¸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù.
(create_surface´Â »ç¿ëÀÚ ÇÔ¼öÀÔ´Ï´Ù)
create_surface ÇÔ¼öÀÇ Ã³¸®´Â init_surface ÇÔ¼ö¿¡¼ ½ÇÇàÇÏ´Â ¡¸ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º¡¹ÀÇ »ý¼º°ú °ÅÀÇ °°½À´Ï´Ù.
LPDIRECTDRAWSURFACE7 surface;
DDSURFACEDESC2 ddsd;  
//0À¸·Î ÃʱâÈ
ZeroMemory(&ddsd,
sizeof(ddsd));
//±¸Á¶Ã¼ÀÇ »çÀÌÁ ¼³Á¤
ddsd.dwSize=
sizeof(ddsd) ;
//ddsCaps, dwWIdth, dwHeight¸¦ À¯È¿ÇÏ°Ô ÇÑ´Ù
ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
//¿ÀÇÁ½ºÅ©¸°¼ÆäÀ̽º
ddsd.ddsCaps.dwCaps=caps;
//¼ÆäÀ̽ºÀÇ »çÀÌÁî ¼³Á¤
ddsd.dwWidth=width;
ddsd.dwHeight=height;
if(dd->CreateSurface(&ddsd, &surface,
NULL)!=DD_OK)
return NULL;
ÇÁ¶óÀ̸Ӹ®¼ÆäÀ̽º »ý¼ºÀÇ Ã³¸®¿Í ´Ù¸¥ Á¡Àº ÁøÇÑ ¹®ÀÚÀÇ ºÎºÐÀÔ´Ï´Ù.
¡¸ddsd ±¸Á¶Ã¼(¾î¶² ¼ÆäÀ̽º·Î ÇÒ±îÀÇ ¼³Á¤ÇÏ´Â ±¸Á¶Ã¼)¡¹¿¡ ¼ÆäÀ̽ºÀÇ ¼ºÁú
¸¦ ³ªÅ¸³»´Â Ç÷¡±×¸¦ °Ç³×ÁÖ´Â ¸â¹ö
¡¸ddsd.dwFlags¡¹¿¡´Â ¡¸DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH¡¹ÀÇ 3°³ÀÇ Ç÷¡±×¸¦ °Ç³×¹Þ°í ÀÖ½À´Ï´Ù.
¡¸DDSD_HEIGHT¡¹ ¡¸DDSD_WIDTH¡¹ÀÇ Ç÷¡±×¸¦ °Ç³×ÁÖ¸é ¼ÆäÀ̽ºÀÇ »çÀÌÁî ÁöÁ¤ÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.
ddsd.dwWidth ¸â¹ö¿Í ddsd.dwHeight ¸â¹ö°¡ »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù
ddsd.dwWidth=width;
ddsd.dwHeight=height;
Àμö·Î °Ç³×¹ÞÀº À̹ÌÁöÀÇ »çÀÌÁ¡¸ddsd ±¸Á¶Ã¼¡¹¿¡ °Ç³×ÁÝ´Ï´Ù.
À̰ÍÀ¸·Î ¼ÆäÀ̽ºÀÇ ¼³Á¤À» ¿Ï·áÇßÀ¸¹Ç·Î ¡¸CreateSurface¡¹¸¦ »ç¿ëÇØ¼ ¼ÆäÀ̽º¸¦ »ý¼ºÇÕ´Ï´Ù.
¸Þ¸ð¸®¿¡´Â À§¿Í °°ÀÌ À̹ÌÁö(½ºÇÁ¶óÀÌÆ®)ÀÇ ¼ÆäÀ̽º°¡ »ý¼ºµÇ°í À̰ÍÀ¸·Î À̹ÌÁö ¹¦ÈÀÇ ÁغñµÇ¾ú½À´Ï´Ù.
4.µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ Ãëµæ
ÀÌÁ¦ ¸Þ¸ð¸®¿¡ À̹ÌÁö¿Í °°Àº »çÀÌÁîÀÇ ¼ÆäÀ̽º´Â »ý¼ºµÇ¾úÁö¸¸ ±× ¾È¿¡´Â ¾ÆÁ÷ À̹ÌÁö µ¥ÀÌÅͰ¡ °Ý³³µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.
¾ÆÁ÷ ºñ¾îÀÖ´Â ¼ÆäÀ̽ºÀÔ´Ï´Ù.
°Å±â¿¡ À̹ÌÁö µ¥ÀÌÅ͸¦ °Ý³³Çϴ ó¸®¸¦ ÇÕ´Ï´Ù.
//ÇöÀçÀÇ È¸é ¸ðµå¿Í ȣȯ¼ºÀÌ ÀÖ´Â ¸Þ¸ð¸®µð¹ÙÀ̽ºÄÜÅØ½ºÆ®¸¦ ÀÛ¼º.
HDC hdcbmp;
if(!(hdcbmp = CreateCompatibleDC(
NULL)))
{
surface->Release();
return NULL;
}
À§¿¡¼ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ ÃëµæÇÏ´Â ÀÛ¾÷À» Çϰí ÀÖ½À´Ï´Ù.
µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¶õ ¹¦È °ü·Ã ¼³Á¤Çϵµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù.
¡¸CreateCompatibleDC(
NULL)¡¹·Î ÁöÁ¤ÇÑ µð¹ÙÀ̽º(À©µµ¿ì, À̹ÌÁö)°°Àº ¼ºÁúÀÇ
µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÛ¼ºÇÒ ¼ö ¾ø´Â °æ¿ì´Â ÇÁ·Î±×·¥ Á¾·á
ÀÛ¼ºÇÑ ¡¸µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¡¹¿Í¡¸¼ÆäÀ̽º¿¡ ¹¦ÈÇÏ°í ½ÍÀº À̹ÌÁö¡¹¸¦ ¿¬°ü ½Ãŵ´Ï´Ù.
SelectObject(hdcbmp, hbm);
6.¼ÆäÀ̽º¿¡ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®ÀÇ Á¤º¸(À̹ÌÁö)¸¦ Àü¼Û
¿©±â¼ ¼ÆäÀ̽º¿¡ À̹ÌÁö µ¥ÀÌÅ͸¦ Àü¼Û ÇØ¼ ¡¸Ç¥¸é=À̹ÌÁö¡¹¶ó°í ÇÏ´Â »óÅ·ΠÇÕ´Ï´Ù.
HDC hdc;
if(surface->GetDC(&hdc) ==DD_OK)
{
BitBlt(hdc, 0,0, bm.bmWidth, bm.bmHeight, hdcbmp, 0,0, SRCCOPY);
surface->ReleaseDC(hdc);
}
À§ÀÇ Ã³¸®¸¦ º¸¸é ¼ÆäÀ̽ºÀÇ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ ÃëµæÇØ¼ ¡¸BitBlt ÇÔ¼ö¡¹¸¦ »ç¿ëÇØ¼ À̹ÌÁö µ¥ÀÌÅ͸¦ ¼ÆäÀ̽º·Î Àü¼Û Çϰí ÀÖ½À´Ï´Ù.
Àü¼ÛÀ» Á¾·áÇÏ¸é ¡¸µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¡¹¸¦ ÇØ¹æÇϰí ÀÖ½À´Ï´Ù.
¼ÆäÀ̽ºÀÇ µð¹ÙÀ̽º ÄÜÅØ½ºÆ®´Â ¡¸surface ¿ÀºêÁ§Æ®¡¹ÀÇ ¡¸ReleaseDC¡¹¸¦ »ç¿ëÇØ¼ ÇØ¹æÇØ¾ß ÇÕ´Ï´Ù.
À̰ÍÀ¸·Î ¼ÆäÀ̽º¿¡´Â À̹ÌÁöÀÇ Á¤º¸°¡ °Ý³³µÇ¾ú½À´Ï´Ù.
¼Ò½º¿¡¼´Â ´ÙÀ½À¸·Î Åõ°ú Ű(½ºÇÁ¶óÀÌÆ®·Î¼ ¹¦È ÇÒ ¶§ÀÇ Åõ°ú»ö¼³Á¤)ÀÇ Ã³¸®¸¦
°¡°í ÀÖ½À´Ï´Ù.(¸¶½ºÅ©Ä÷¯ ¼³Á¤)
º¸Ãæ
¼ÆäÀ̽º°¡ Áõ°¡Çϸé ÇÁ·Î±×·¥À» Á¾·áÇÒ ¶§ ÇØ¹æÇØ¾ß ÇÏ´Â ¼ÆäÀ̽º°¡
Áõ°¡ÇϰÚÁö¿ä.
ÇØ¹æ 󸮸¦ Çϰí ÀÖ´Â ÇÔ¼ö¿¡ Ãß°¡ÇÑ ¼ÆäÀ̽ºÀÇ ÇØ¹æÃ³¸®¸¦ Ãß°¡ÇսôÙ.
½ºÇÁ¶óÀÌÆ®¿ëÀÇ ¼ÆäÀ̽º´Â ¸Þ¸ð¸®°¡ ÃæÁ·µÇ´Â ÇÑ ¾ó¸¶µçÁö »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÇÊ¿äÇÑ ¼ö¸¸Å ¼ÆäÀ̽º¸¦ ¸¸µé¾îµµ ±¦ÂúÀ» °ÍÀÔ´Ï´Ù.
(¼ÆäÀ̽º´Â ¿©·¯ °³¸¦ ¸¸µé¾î¼ µû·Î RoadÇÏ´Â °Íº¸´Ù Çϳª¿¡¼ RoadÇÏ´ÂÆíÀÌ
¼Óµµ°¡ ´õ ºü¸¨´Ï´Ù)
DirectX DRAW¡¡Çø³
Àü ȸ¿¡¼ ¼ÆäÀ̽º¸¦ ¸¸µé°í À̹ÌÁö¸¦ ¹¦È ÇÒ Áغñ´Â µÆÁö¸¸ ¾ÆÁ÷ ¼ÆäÀ̽º¸¦ ¹¦ÈÇϰí ÀÖÁö´Â ¾Ê½À´Ï´Ù.
ÀÌÁ¦ ¼ÆäÀ̽ºÀÇ ³»¿ëÀ» ȸ鿡 Ç¥½ÃÇÕ´Ï´Ù.
Áö±Ý±îÁö ÇÁ·Î±×·¥Àº À§ÀÇ ±×¸²°ú °°ÀÌ ¸Þ¸ð¸®»ó¿¡ ¼ÆäÀ̽º´Â Á¸ÀçÇϰí ÀÖ¾ú½À´Ï´Ù.
ÇÏÁö¸¸, ȸ鿡´Â Ç¥½ÃµÇ°í ÀÖÁö ¾Ê¾Ò½À´Ï´Ù.
ȸ鿡 Ç¥½ÃµÇ°í ÀÖ´ø °ÍÀº ºñ¾îÀÖ´Â À©µµ¿ì Ŭ¶óÀÌ¾ðÆ® ¿µ¿ªÀÔ´Ï´Ù.
Çø³(Flip)
¼ÆäÀ̽º¸¦ ¡¸Çø³¡¹¿¡ ÀÇÇØ ȸ鿡 ¹¦È ÇÕ´Ï´Ù.
ÀÌ ¡¸Çø³¡¹Àº °ÔÀÓÀÌ µ¿ÀÛÇÏ´Â µ¿¾È ¹Ýº¹½ÇÇà µË´Ï´Ù.
¹¦ÈÀÇ È帧
ù¹øÂ°ÀÇ¡¸Çø³¡¹À» Çϸ顸ȸé(µð½ºÇ÷¹ÀÌ)¡¹= ¡¸ÇÁ·ÐÆ®¼ÆäÀ̽º(ÇÁ¶óÀ̸Ӹ®¼ÆäÀ̽º)¡¹ÀÇ »óÅÂÀÔ´Ï´Ù.
ȸ鿡´Â ¡¸ÇÁ·ÐÆ® ¼ÆäÀ̽º¡¹ÀÇ Á¤º¸(À̹ÌÁö)°¡ Ç¥½ÃµË´Ï´Ù.
¹¦È ¼ø¼´Â ¡¸½ºÇÁ¶óÀÌÆ® ¼ÆäÀ̽º¡¹¿¡¼ ¡¸¹é¼ÆäÀ̽º¡¹·Î ¹¦È(Àü¼Û) ÇÕ´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ ¡¸¹é¼ÆäÀ̽º¡¹¸¦ ¡¸Çø³¡¹ÇÕ´Ï´Ù.
¡¸Çø³¡¹À» ÇÏ¸é ¡¸ÇÁ·ÐÆ® ¼ÆäÀ̽º¡¹¿Í¡¸¹é¼ÆäÀ̽º¡¹°¡ ±³Ã¼µË´Ï´Ù.
±×·¯¸é Áö±Ý±îÁö ȸ鿡 ¹Ý¿µµÇ¾î ÀÖÁö ¾Ê¾Ò´ø ¡¸¹é¼ÆäÀ̽º¡¹ÀÇ Á¤º¸(À̹ÌÁö)°¡ Ç¥½ÃµË´Ï´Ù.
ÇÁ·Î±×·¡¸Ó´Â Ç×»ó ¡¸¹é¼ÆäÀ̽º¡¹¿¡ À̹ÌÁö¸¦ ³Ö¾î ¡¸Çø³¡¹ÇÏ¸é µË´Ï´Ù.
ÇöÀçÀÇ »óÅ·Πȸ鿡´Â ¼ÆäÀ̽ºÀÇ Á¤º¸°¡ Ç¥½ÃµÇ°í ÀÖÀ¸¹Ç·Î À̰ÍÀ¸·Î µÇ¾ú´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¡¸Çø³¡¹À» ½ÇÇàÇϰí ÀÖ´Â ºÎºÐ¡¤¡¤¡¤¡¤
loop ÇÔ¼ö
void loop(void)
{
if(timeGetTime()=MSPF)
{
do
{
t-=MSPF;
prev_time+=MSPF;
 
// ó¸® ±â¼ú
}
while(t>=MSPF);
 
//flip ÇÔ¼ö·Î Çø³À» ½ÇÇàÇϰí ÀÖ½À´Ï´Ù.
flip();
}
}
loop ÇÔ¼ö·Î ¡¸Çø³¡¹À» Çϰí ÀÖ½À´Ï´Ù(Çø³ ÇÔ¼ö¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù)
loop ÇÔ¼ö´Â 60 FPS¸¦ ó¸®Çϰí ÀÖ´Â °÷¿¡¼ ¡¸flip()¡¹ÇÔ¼ö°¡ ÀÖ´Â À§Ä¡´Â
1ÃÊ¿¡ (¾à)60ȸ ½ÇÇàµÇ´Â °÷ÀÔ´Ï´Ù.
MainSurface->Flip(
NULL, DDFLIP_WAIT);
ÇÏÁö¸¸ ¡¸flip ÇÔ¼ö¡¹·Î 󸮵ǰí ÀÖ´Â ³»¿ëÀº
ÀÌ 1ÇุÀ¸·Î ¼ÆäÀ̽º¸¦ ȸ鿡 Ç¥½ÃµÇ´Â ¼ÆäÀ̽º·Î ¹Ù²ã ³Ö±â¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¡¸ÇÁ·ÐÆ®¼ÆäÀ̽º(ȸ鿡 º¸ÀÌ´Â ¼ÆäÀ̽º)¡¹¸¦ Ÿ°ÙÀ¸·Î ¡¸Flip ÇÔ¼ö¡¹·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DirectX DRAW¡¡À̹ÌÁö ¹¦È
½ºÇÁ¶óÀÌÆ®ÀÇ ¼ÆäÀ̽ºµµ ¸¸µé°í Çø³µµ Çß½À´Ï´Ù.
¿ÏÀüÇÏ°Ô À̹ÌÁöÀÇ ¹¦È°¡ °¡´ÉÇÑ »óŰ¡ µÇ¾úÀ¸¹Ç·Î À̹ÌÁö ¹¦È¸¦ ÇÕ´Ï´Ù.
¹¦È´Â ¡¸¹é¼ÆäÀ̽º¡¹¿¡ÀÇ ¡¸Àü¼Û¡¹¡¤¡¤¡¤±×¸®°í ½Ç½ÃÇÕ´Ï´Ù.
¡¸¹é¼ÆäÀ̽º¡¹¿¡ÀÇ Àü¼ÛÀº ¡¸Çø³¡¹À» Çϱâ Àü¿¡ ½Ç½ÃÇÕ´Ï´Ù.
void loop(void)
{
if(timeGetTime()=MSPF)
{
do
{
t-=MSPF;
prev_time+=MSPF;
 
//°è»ê ó¸®
}
while(t>=MSPF);
 
//¹¦È ó¸®
 
//flip ÇÔ¼ö·Î Çø³À» ½ÇÇàÇϰí ÀÖ½À´Ï´Ù.
flip();
}
}
±×·³ Ãß°¡µÈ °ÍÀ» »ìÆì º¸µµ·Ï ÇսôÙ.
void loop(void)
{
if(timeGetTime()=MSPF)
{
do
{
t-=MSPF;
prev_time+=MSPF;
 
//°è»ê ó¸®
}
while(t>=MSPF);
 
//¹¦È ó¸®
imagerender();
 
//flip ÇÔ¼ö·Î Çø³À» ½ÇÇàÇϰí ÀÖ½À´Ï´Ù.
flip();
}
}
Ãß°¡ µÈ °ÍÀº ÀÌ¡¸loop ÇÔ¼ö¡¹ÀÔ´Ï´Ù.
ÁøÇÑ ¹®ÀÚ·Î µÇ¾î ÀÖ´Â ºÎºÐÀÌ Ãß°¡µÈ ºÎºÐÀÔ´Ï´Ù.
¡¸imagerender()¡¹´Â À̹ÌÁö¸¦ ¹¦È Çϴ ó¸®¸¦ ¸ðÀº ÇÔ¼ö·Î ÀÓÀÇ·Î Á¦ÀÛ µÈ °ÍÀÔ´Ï´Ù.
(ÇÔ¼öÀÇ ³»¿ªÀº ¹Ø¿¡¼ ±â¼úµÇ°í ÀÖ½À´Ï´Ù.)
void imagerender(void)
{
BackSurface->BltFast(150,150, sprite,
NULL, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
¹¦È¸¦ ½Ç½ÃÇϰí ÀÖ´Â ºÎºÐÀÔ´Ï´Ù.
ÇÔ¼öÀÇ Àǹ̸¦ ¼Ò°³Çϸé
¿©±â¼ »ç¿ëµÇ°í ÀÖ´Â ¡¸BltFast ÇÔ¼ö¡¹´Â ¡¸À̹ÌÁö¸¦ Àü¼Û¡¹ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
Àü¼ÛÀ̶õ ½ºÇÁ¶óÀÌÆ® À̹ÌÁö¸¦ ¹é¼ÆäÀ̽º·Î ¹¦ÈÇÏ´Â °ÍÀÔ´Ï´Ù.
¡¸BitBlt ÇÔ¼ö¡¹´Â ¡¸È®´ë Ãà¼Ò¡¹°¡ °¡´ÉÇÏÁö¸¸ ¡¸BltFast ÇÔ¼ö¡¹¿Í ºñ±³ÇÏ¸é ½ºÇǵ忡¼
Á¶±Ý ¶³¾îÁö¹Ç·Î º¸Åë Àü¼ÛÇÏ´Â °æ¿ì´Â ¡¸BltFast ÇÔ¼ö¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
(BitBlt ÇÔ¼ö´Â µµÅ¥¸àÆ® ÂüÁ¶)
HRESULT BltFast(
DWORD dwX,  
//¹¦È ÇÏ´Â XÁÂÇ¥
DWORD dwY,  
//¹¦È ÇÏ´Â YÁÂÇ¥
LPDIRECTDRAWSURFACE3 lpDDSrcSurface
,//ºÒ·¯¿Ã À̹ÌÁö°¡ µé¾î ÀÖ´Â ¼ÆäÀ̽º
LP
RECT lpSrc
Rect,  
//ºÒ·¯¿Ã ¼ÆäÀ̽ºÀÇ ÀϺΠÀü¼ÛÀ» ½Ç½ÃÇÒ ¶§¿¡ »ç¿ë
DWORD dwTrans  
//Àü¼Û ŸÀÔ
);
(VC++ÇïÇÁ¿¡¼)
¿ì¼± ù° Á¦2 ÆÄ¶ó¹ÌÅÍ´Â ÄÚ¸àÆ®´ë·ÎÀÔ´Ï´Ù.
Àü¼ÛÇÒ À̹ÌÁö°¡ ¸¹Àº °æ¿ì´Â ½ºÇÁ¶óÀÌÆ®¼ÆäÀ̽º¿¡¼ ¹é ¹öÆÛ·Î Àü¼Û ÇÕ´Ï´Ù.
¹é ¹öÆÛÀÇ ¾î´À À§Ä¡(ÁÂÇ¥)¸¦ ¹¦È ÇÒ±î?
±× °ªÀ» ÆÄ¶ó¹ÌÅÍ 1, 2·Î ÁöÁ¤ÇÕ´Ï´Ù.
Á¦3 ÆÄ¶ó¹ÌÅʹ ȣÃâÇÒ ¼ÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù.
»ùÇÃÀÇ °æ¿ì´Â ÁغñÇÑ À̹ÌÁö(½ºÇÁ¶óÀÌÆ®)ÀÇ ¼ÆäÀ̽º¸¦ °Ç³×ÁÖ°í ÀÖ½À´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ ½ºÇÁ¶óÀÌÆ® ¼ÆäÀ̽ºÀÇ ³»¿ëÀ» º¸³¾ ¼ÆäÀ̽º·Î Àü¼ÛÇϴ ó¸®¸¦
ÇÕ´Ï´Ù.
ÀÌ Á¦3 ÆÄ¶ó¹ÌÅ͸¦¡¸¹é¼ÆäÀ̽º¡¹¿¡¼µµ ÇÒ ¼ö ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù.
Á¦4 ÆÄ¶ó¹ÌÅÍ´Â Çʿ信 µû¶ó¼ »ç¿ëÇÕ´Ï´Ù.
(¿©±â¸¦
NULL·Î Çϸé, ¼ÆäÀ̽º ÀüºÎ¸¦ Àü¼ÛÀÌ ÇÑ´Ù!)
¼ÆäÀ̽º¿¡´Â °ÔÀÓ¿¡¼ »ç¿ëÇÏ´Â À̹ÌÁö¸¦ ÇѲ¨¹ø¿¡ ¸ð¾Æ¼ »ý¼ºÇÒ °ÍÀÌ ¸¹½À´Ï´Ù.
ÀϹÝÀûÀ¸·Î »ý¼ºÇÏ´Â ¼ÆäÀ̽º¿¡´Â ¸¹Àº À̹ÌÁö¸¦ ¸ð¾Æ¼ °Ý³³ÇÕ´Ï´Ù.
(ij¸¯ÅͶó¸é ij¸¯Å͵îÀ¸·Î)
ÇϳªÀÇ À̹ÌÁö¿¡ 1°³¾¿ ¼ÆäÀ̽º¸¦ »ý¼ºÇÏ´Â °Íµµ ±¦ÂúÁö¸¸
¸Þ¸ð¸® °ø°£ÀÌ ³¶ºñÀÔ´Ï´Ù.(ÀûÀº ¿ë·®ÀÌÁö¸¸. . )
°¡´ÉÇÑ ÇÑ È¿À²ÀûÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â °ÍÀÌ ¿ª½Ã º£½ºÆ®¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹·Î ¸¹Àº À̹ÌÁö¸¦ ÁغñÇØ µÐ °æ¿ì
Á¦4 ÆÄ¶ó¹ÌÅ͸¦
NULL·Î ÇØ µÎ¸é ¼ÆäÀ̽º Àüü°¡ Àü¼Û µÈ´Ù¡¤¡¤¡¤¡¤
Áï Áö±Ý ÇÊ¿äÇÏÁö ¾ÊÀº À̹ÌÁö±îÁöµµ ¹¦ÈµË´Ï´Ù.
°Å±â¼ ÀÌ Á¦4 ÆÄ¶ó¹ÌÅÍ¿¡´Â ¼ÆäÀ̽ºÀÇ ¾î´À ºÎºÐÀ» Àü¼ÛÇÏ´Â °ªÀ» °Ç³×ÁÝ´Ï´Ù.
¿©±â¼ °Ç³×ÁÖ´Â °ªÀº ¡¸
RECT ±¸Á¶Ã¼¡¹°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù.
RECT ±¸Á¶Ã¼´Â 4°³ÀÇ ¸â¹ö
¡¸ÁÂÃø X¡¹ ¡¸ÁÂÃø Y¡¹ ¡¸¿ìÃø X¡¹ ¡¸¿ìÃø Y¡¹¶ó°í ÇÏ´Â ´À³¦ÀÇ ¸â¹ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
ÀÌ ¸â¹ö °¢°¢ °ªÀ» °Ç³×ÁÖ¾î µÓ´Ï´Ù.
¡¸BltFast ÇÔ¼ö¡¹¸¦ ½ÇÇàÇϱâ Àü¿¡
RECT ±¸Á¶Ã¼¸¦ »ý¼ºÇØ °¢ ¸â¹ö¿¡ °ªÀ» ³Ö¾î µÎ¸é OK ÀÔ´Ï´Ù.
Á¦5 ÆÄ¶ó¹ÌÅÍ´Â ¾î¶°ÇÑ Àü¼ÛÀ» ÇÒ±î?¸¦ °áÁ¤ÇÏ´Â Ç÷¡±×ÀÔ´Ï´Ù.
Ç÷¡±×´Â ÀÌÇϷκÎÅÍ ¼±ÅÃÇØ »ç¿ëÇÕ´Ï´Ù.(ÇïÇÁÂüÁ¶)
DDBLTFAST_DESTCOLORKEY
Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó ۸¦ »ç¿ëÇÏ´Â Åõ°úÇü ºí·Ï Àü¼ÛÀ» ÁöÁ¤ÇÑ´Ù.
À̰ÍÀ» °Ç³×ÁÖ¸é ÁöÁ¤µÈ »öÀ» Åõ¸íÇÏ°Ô ÇØ¼ ¹¦È ÇÑ´Ù
(Àü¼ÛÇÒ °÷¿¡¼ Åõ¸íó¸®)
DDBLTFAST_NOCOLORKEY
Åõ¸íÀÌ ¾Æ´Ñ º¸ÅëÀÇ º¹»ç ºí·Ï Àü¼ÛÀ» ÁöÁ¤ÇÑ´Ù.
Åõ¸íÇÏ°Ô ÇÏÁö ¾Ê°í ¹¦È
DDBLTFAST_SRCCOLORKEY
À̰ÍÀ» °Ç³×ÁÖ¸é ÁöÁ¤µÈ »öÀ» Åõ¸íÇÏ°Ô ÇØ¼ ¹¦È ÇÑ´Ù
(Àü¼ÛÇÒ °÷¿¡¼ Åõ¸í󸮷Î)
DDBLTFAST_WAIT
ºí·Ï Àü¼ÛÀÌ ¹Ù»Û °æ¿ì, DDERR_WASSTILLDRAWING¿¡ ¹Ý¿µµÇ´Â °ªÀ» ¹Ù·Î µ¹·ÁÁÖÁö ¾Ê°í ±â´Ù¸°´Ù.
±×¸®°í ºí·Ï Àü¼ÛÀÇ Áغñ¸¦ ÇÏ´øÁö ȤÀº ´Ù¸¥ ¿¡·¯°¡ ¹ß»ýÇÏ´Â ´ë·Î Áï½Ã µ¹¾Æ¿Â´Ù.
À̰ÍÀ» °Ç³× µÎÁö ¾ÊÀ¸¸é ¹¦È µÇÁö ¾ÊÀ» ¶§°¡ ÀÖÁö¸¸ ¹¦È¸¦ ÇÒ ¼ö ÀÖÀ» ¶§±îÁö ¸ØÃá´Ù.
¶§¹®¿¡ 󸮰¡ Áö¿¬µÇ´Â °æ¿ìµµ ÀÖ´Ù
º¸Ãæ
BackSurface->BltFast
¡¤¡¤¡¤´Â ¿Ö ÀÌ·¸°Ô µÇ°í ÀÖ´ÂÁö?
À§ÀÇ °æ¿ì´Â ¡¸¹é¼ÆäÀ̽º¡¹·Î Àü¼ÛÀÌ µË´Ï´Ù.
¿©±â¸¦ ½ºÇÁ¶óÀÌÆ® ¼ÆäÀ̽º·Î ÇÏ¸é ½ºÇÁ¶óÀÌÆ® ¼ÆäÀ̽º·Î ¹¦ÈÇÏ°Ô µË´Ï´Ù.
À̰ÍÀ» »ç¿ëÇØ À̹ÌÁö ÆíÁýµµ °¡´ÉÇÕ´Ï´Ù.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
¼ÆäÀ̽ºÀÇ ÃʱâÈ
Àü¸é painting¿¡ ÇØ´çÇÏ´Â ¡¸render ÇÔ¼ö¡¹¸¦ ¸¸µé¾ú½À´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ÀÌÀü ¡¸flip ÇÔ¼ö¡¹¸¦ È£ÃâÇß´ø ºÎºÐ¿¡¼ À̰ÍÀ» È£ÃâÇϰí ÀÖ½À´Ï´Ù.
void loop(void)
{
if(timeGetTime()=MSPF)
{
do
{
t-=MSPF;
prev_time+=MSPF;
 
// °è»ê ó¸®
}
while(t>=MSPF);
 
//¹¦È ó¸®
render();
}
}
È£ÃâÇϰí ÀÖ´Â °ÍÀº £Àº ¹®ÀÚÀÇ ºÎºÐÀÔ´Ï´Ù.
±×·³ ¡¸render ÇÔ¼ö¡¹ÀÇ Ã³¸®´Â. . .
void render(void)
{
DDBLTFX ddbltfx;
ddbltfx.dwSize =
sizeof(ddbltfx);
ddbltfx.dwFill
Color = 0;
BackSurface->Blt(
NULL,
NULL,
NULL,
DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
imagerender();  
// À̹ÌÁöÀÇ Àü¼Û
flip();  
// Çø³
}
Àû»ö ¹®ÀÚÀÇ ºÎºÐÀº ÀüȸÀÇ ÇÁ·Î±×·¥À¸·Î ¸¸µç ¹¦È ó¸®¿Í Çø³ÀÔ´Ï´Ù.
±×·³ À§·ÎºÎÅÍ ¼³¸í¡¤¡¤¡¤
DDBLTFX ddbltfx;
ddbltfx.dwSize =
sizeof(ddbltfx);
ddbltfx.dwFill
Color = 0;
¡¸DDBLTFX ±¸Á¶Ã¼¡¹¸¦ Á¤ÀÇÇÕ´Ï´Ù.
À̰ÍÀº ȸé È¿°ú µîÀ» Ç¥ÇöÇÒ ¶§¿¡ Àß »ç¿ëÇÏ´Â ±¸Á¶Ã¼ÀÔ´Ï´Ù.
ÀÌ ±¸Á¶Ã¼¿¡ ½Ç½ÃÇÏ°í ½ÍÀº ȸé È¿°úÀÇ °ª(Ç÷¡±×)À» ¸®ÅÏÇØ¼ ¡¸Blt ÇÔ¼ö¡¹¸¦ ½ÇÇàÇÏ¸é ¿©·¯ °¡Áö ȸé È¿°ú¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
ȸé È¿°ú¿¡¼ Á¦ÀÏ °£´ÜÇÑ °ÍÀÌ È¸éÀÇ ÃʱâÈÀÔ´Ï´Ù.
À§¿¡¼´Â ¡¸DDBLTFX ±¸Á¶Ã¼¡¹¸¦ Á¤ÀÇÇØ ¡¸dwSize¡¹ ¡¸dwFillColor¡¹¶ó°í ÇÏ´Â
¸â¹ö¿¡ °ªÀ» °Ç³×ÁÝ´Ï´Ù.
¡¸dwSize¡¹´Â ±¸Á¶Ã¼ »çÀÌÁ ÀÔ·ÂÇÕ´Ï´Ù.
¡¸dwFillColor¡¹¸¸ÀÌ Æ÷ÀÎÆ®!
¡¸dwFillColor¡¹´Â ÆäÀÎÆÃÇÏ´Â »öÀ» ÁöÁ¤ÇÕ´Ï´Ù.
»ùÇÿ¡¼´Â ¡¸0¡¹À» °Ç³×ÁÖ°í ÀÖÁö¸¸ RBG°ªÀ¸·Î °Ç³×ÁÙ ¼öµµ ÀÖ½À´Ï´Ù.
È帧Àº À§ÀÇ ±×¸²°ú °°½À´Ï´Ù.
°á±¹ ÆäÀÎÆÃµµ ¹¦È ¸í·É¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù(Blt ¸í·ÉÀ¸·Î)
BackSurface->Blt(
NULL,
NULL,
NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
À§ÀÇ ºÎºÐÀÌ ÆäÀÎÆÃÀÇ ÇϳªÀÇ ¿¹ÀÔ´Ï´Ù.
Blt ÇÔ¼öÀÇ »ç¾ç
Á¦1 ÆÄ¶ó¹ÌÅÍ- Àü¼ÛÇÒ °÷ÀÇ Á÷»ç°¢Çü(
RECT ±¸Á¶Ã¼·Î)
Á¦2 ÆÄ¶ó¹ÌÅÍ-Àü¼ÛÇØ ¿Ã °÷ÀÇ ¼ÆäÀ̽º
Á¦3 ÆÄ¶ó¹ÌÅÍ-Àü¼ÛÇØ ¿Ã °÷ÀÇ Á÷»ç°¢Çü(
RECT ±¸Á¶Ã¼·Î)
Á¦4 ÆÄ¶ó¹ÌÅÍ-Ç÷¡±×
Á¦5 ÆÄ¶ó¹ÌÅÍ-DDBLTFX ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ
Áß¿äÇÑ °ÍÀº Ç÷¡±×ÀÔ´Ï´Ù. ±× ¿Ü¿¡´Â ¸ðµÎ ÆäÀÎÆÃÀ» ÇÒ °æ¿ì´Â ¡¸
NULL¡¹·Î ¼³Á¤ÇÕ´Ï´Ù.
¡¸DDBLT_COLORFILL¡¹ Ç÷¡±×´Â ¹Ýµå½Ã °Ç³×ÁÝ´Ï´Ù.
À̰ÍÀº À§¿¡¼ ÀüºÎ ÆäÀÎÆÃ ÇÏ´Â »öÀ» °áÁ¤ÇÑ ¡¸DDBLTFX ±¸Á¶Ã¼¡¹¸¦ »ç¿ëÇϵµ·Ï µË´Ï´Ù.
¡¸DDBLT_WAIT¡¹´Â ±×°ÍÀÌ ³¡³¯ ¶§±îÁö 󸮸¦ ¸ØÃá´Ù´Â ÀǹÌÀÔ´Ï´Ù.
¿©±â±îÁöÀÇ Ã³¸®·Î ¹é¼ÆäÀ̽º´Â ¸ðµÎ blackÀ¸·Î paintingµË´Ï´Ù.
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
¼ÆäÀ̽ºÀÇ ÀϺΠÀü¼Û
À̹øÀº ½ºÇÁ¶óÀÌÆ® ¼ÆäÀ̽ºÀÇ ÀϺθ¦ ¹é¼ÆäÀ̽º¿¡ Àü¼ÛÇÏ´Â
ÀÛ¾÷À» ½Ç½ÃÇսôÙ.
À§ÀÇ ±×¸²°ú °°ÀÌ ¼ÆäÀ̽ºÀÇ ÀϺθ¦ Àü¼ÛÇÕ´Ï´Ù.
À̰ÍÀ» ÇÒ ¶§´Â ´ç¿¬È÷ ±× ¹üÀ§¸¦ ³ªÅ¸³»´Â º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¹æ¹ýÀ¸·Î ij¸¯ÅÍÀÇ ¾Ö´Ï¸ÞÀ̼ÇÀ» Ç¥ÇöÇÏ´Â °ÍÀÌ ¿ëÀÌÇÏ°Ô µË´Ï´Ù.
Ãß°¡ µÈ ºÎºÐÀ¸·Î
½ÇÁ¦·Î ¹¦È¸¦ ½Ç½ÃÇϰí ÀÖ´Â ¡¸BltFast ÇÔ¼ö¡¹¸¦ ½ÇÇàÇϰí ÀÖ´ø ºÎºÐÀÔ´Ï´Ù.
Àü¹øÀÇ ÇÁ·Î±×·¥¿¡¼´Â¡¤¡¤¡¤¹¦È¸¦ ½Ç½ÃÇϰí Àִ ó¸®´Â ÀÌÇÏ¿Í °°ÀÌ µÇ¾îÀÖ¾ú½À´Ï´Ù
//---------------------------------------
//imagerender ÇÔ¼ö£º¹é¼ÆäÀ̽º¿¡ ¹¦È
void imagerender(void)
{
BackSurface->BltFast(150,150, sprite,
NULL, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
ÀÌ ºÎºÐÀ» º¯°æÇÕ´Ï´Ù.
¡¸BltFast ÇÔ¼ö¡¹ÀÇ Á¦4 ÆÄ¶ó¹ÌÅͰ¡ Àü¹ø¿¡´Â ¡¸
NULL¡¹À̾ú½À´Ï´Ù.
ÀÌ ÆÄ¶ó¹ÌÅͰ¡ ¼ÆäÀ̽ºÀÇ ¾î´À ºÎºÐÀ» Àü¼Û ÇÒÁö?
±× À§Ä¡¿Í »çÀÌÁ °ª(value)À¸·Î ÇØ¼ °Ç³×ÁÖ´Â ÆÄ¶ó¹ÌÅÍ·Î ¿©±â¿¡ ¡¸
RECT ±¸Á¶Ã¼¡¹ÀÇ Æ÷ÀÎÅÍ·Î ÆÄ¶ó¹ÌÅÍ¿¡ °Ç³×ÁÝ´Ï´Ù.
±×·¯¸é ¹Ì¸® ¡¸
RECT ±¸Á¶Ã¼¡¹¿¡ °ªÀ» ³Ö¾î µÎ¾î¾ß ÇÕ´Ï´Ù.
¿ì¼±Àº ¡¸
RECT ±¸Á¶Ã¼¡¹¸¦ Á¤ÀÇÇÕ´Ï´Ù.
void imagerender(void)
{
RECT rect;
BackSurface->BltFast(150,150, sprite,&rect, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
RECT ±¸Á¶Ã¼´Â »ç°¢ÇüÀÇ ½ÃÀÛ À§Ä¡ ÁÂÇ¥¿Í ±× »çÀÌÁ º¸°üÇϴµ¥ ÀûÇÕÇÑ ±¸Á¶Ã¼ÀÔ´Ï´Ù.
(ÇïÇÁÂüÁ¶)
±×·±µ¥,
RECT ±¸Á¶Ã¼¸¦ Á¤ÀÇÇÑ ÈÄ´Â, 4°³ÀÇ ¸â¹ö¿¡ °ªÀ» ¼ÂÆÃÇØ¾ß ÇÕ´Ï´Ù.
»ùÇÿ¡¼ÀÇ À̹ÌÁö´Â ¡¸64¡¿32¡¹»çÀÌÁîÀÇ À̹ÌÁöÀÔ´Ï´Ù.
RECT ±¸Á¶Ã¼¸¦ »ç¿ëÇØ À̹ÌÁö ¸ðµÎ¸¦ Àü¼Û ÇÒ ¶§´Â¡¤¡¤¡¤¡¤
left¡¡¡¡¿¡´Â ¡¸0¡¹
top¡¡¡¡¿¡´Â ¡¸0¡¹
right¡¡¿¡´Â ¡¸63¡¹
under¡¡¿¡´Â ¡¸31¡¹
À§ÀÇ °°ÀÌ °ªÀ» ÀÔ·ÂÇÕ´Ï´Ù.
À̹ÌÁö »çÀÌÁ´Ù 1³·Àº ÀÌÀ¯´Â 0ºÎÅÍ Ã½Å©Çϱ⠶§¹®ÀÔ´Ï´Ù.
(¼ÆäÀ̽ºÀÇ »çÀÌÁ´Ù Å« °ªÀ¸·Î ¹üÀ§ ÁöÁ¤Çϸé À̹ÌÁö°¡ Ç¥½ÃµÇÁö ¾Ê±â ¶§¹®¿¡ ÁÖÀÇ)
À§¿Í °°ÀÌ Ç¥½ÃÇÒ ¶§´Â¡¤¡¤¡¤
left¡¡¡¡¿¡´Â ¡¸0¡¹
top¡¡¡¡¿¡´Â ¡¸0¡¹
right¡¡¿¡´Â ¡¸31¡¹
under¡¡¿¡´Â ¡¸31¡¹
¡¸BltFast ÇÔ¼ö¡¹¸¦ »ç¿ëÇϱâ Àü¿¡ ¡¸
RECT ±¸Á¶Ã¼¡¹¸¦ À§ÀÇ °ªÀ¸·Î ÃʱâÈÇϸé,
RECT rect={0,0,63,31};
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
½ºÇÁ¶óÀÌÆ® À̵¿
À̹ÌÁö ¹¦È°¡ µÇ¸é ½ºÇÁ¶óÀÌÆ®ÀÇ À̵¿µµ °£´ÜÇÕ´Ï´Ù.
¹¦È ÇÔ¼öÀÎ ¡¸BltFast¡¹µîÀÇ ÆÄ¶ó¹ÌÅ͸¦ ÇÁ·Î±×·¥¿¡¼ Áõ°¡ ¶Ç´Â °¨¼Ò ½ÃŰ¸é ½ºÇÁ¶óÀÌÆ®´Â À̵¿ÇÕ´Ï´Ù.
¹¦È µÉ ¶§ ÁÂÇ¥ °ªÀ» º¯°æÇÏ¸é ½ºÇÁ¶óÀÌÆ®´Â ¿òÁ÷À̰í ÀÖ´Â °Íó·³ º¸ÀÔ´Ï´Ù.
»ùÇÃÀº ¿ìÃø ¹æÇâÀ¸·Î ij¸¯Å͸¦ À̵¿½ÃŰ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
void imagerender(void)
{
RECT rect={0,0,63,31};
BackSurface->BltFast(xpos, ypos,sprite, &rect,
DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
xpos++
//ij¸¯ÅÍÀÇ XÁÂÇ¥ °ª¿¡ 1 Ç÷¯½º
}
ij¸¯Å͸¦ ¹¦È ÇÏ´ø ¡¸imagerender ÇÔ¼ö¡¹°¡ º¯°æµÇ¾î ÀÖ½À´Ï´Ù.
¿ì¼±Àº ¡¸BltFast¡¹ÀÇ Á¦1, 2 ÆÄ¶ó¹ÌÅͰ¡ Áö±Ý±îÁö´Â Á÷Á¢ °ªÀ» °Ç³×ÁÖ¾úÀ¸³ª
¿©±â¸¦ º¯¼ö·Î ÇØ¼ ij¸¯ÅÍÀÇ ÁÂÇ¥¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
¡¸xpos¡¹ ¡¸ypos¡¹°¢°¢ ±Û·Î¹ú·Î Á¤ÀǵǾî ÀÖ½À´Ï´Ù.(global.h¿¡)
xpos++
//ij¸¯ÅÍÀÇ XÁÂÇ¥ °ª¿¡ 1 Ç÷¯½º
ÀÌ Ã³¸®´Â ij¸¯ÅÍÀÇ Ç¥½Ã ÁÂÇ¥ÀÇ X °ªÀÎ ¡¸xpos¡¹¿¡ 1À» Ç÷¯½ºÇϰí ÀÖ½À´Ï´Ù.
±×·Î ÀÎÇØ ´ÙÀ½¿¡ ¹¦È µÉ ¶§´Â ¡¸X+1¡¹µÈ À§Ä¡¿¡ ¹¦ÈµË´Ï´Ù.
Æ÷ÀÎÆ®
»ùÇÿ¡ ´ëÇØ
»ùÇÿ¡¼´Â ij¸¯ÅͰ¡ È¸é ³¡¿¡ µµ´ÞÇÏ¸é °©Àڱ⠻ç¶óÁý´Ï´Ù.
À̰ÍÀº ¼ÆäÀ̽ºÀÇ Ç¥½Ã ¿µ¿ªÀ» ³Ñ¾î°¡ ¹ö·È±â ¶§¹®ÀÔ´Ï´Ù.
ij¸¯ÅÍÀÇ 1 µµÆ®°¡ ¼ÆäÀ̽º»çÀÌÁ ÃʰúÇß´Ù
°©Àڱ⠻ç¶óÁö´Â °ÍÀ» ¸·À¸·Á¸é 󸮰¡ ÇÊ¿äÇÕ´Ï´Ù.
DirectX¿¡¼´Â À̰ÍÀ» °£´ÜÇÏ°Ô ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±â¿ï±â À̵¿
¸¸¾à ¡¸¿À¸¥ÂÊ À§¡¹ÀÇ ±â¿ï±â À̵¿À» ½Ç½ÃÇÏ°í ½ÍÀ» ¶§´Â ¡¸X°ª¿¡ Ç÷¯½º¡¹ ¡¸Y°ª¿¡ ¸¶À̳ʽº¡¹ÇÕ´Ï´Ù.
±×·¯¸é ¿À¸¥ÂÊ À§·Î ºñ½ºµëÇÏ°Ô ÁøÇàµË´Ï´Ù.
±â¿ï±â À̵¿ÀÌ Á¾È¾ÀÇ À̵¿º¸´Ù ¾à°£ °í¼ÓÀÔ´Ï´Ù.
À̰ÍÀº 1 µµÆ®(¿òÁ÷ÀÌ´Â ¿ä¼Ò)°¡ Á¤¹æÇüÀ¸·Î Á¾È¾ÀÇ ±æÀÌ´Â µ¿ÀÏÇѵ¥ ºñ±³
±â¿ï±âÀÇ ±æÀ̰¡ °¡·Î¼¼·Îº¸´Ù ¾à°£ ±æ±â ¶§¹®¿¡ ±×·¸°Ô µË´Ï´Ù.
½º½º·Î Á¤¹æÇüÀ» ±×·Á ±â¿ï±â ¼±°ú °¡·Î¼¼·ÎÀÇ ±æÀ̸¦ ºñ±³ÇØ º¸ÀÚ
¸¸¾à ±â¿ï±âÀÇ À̵¿µµ Á¾È¾°ú °°Àº ½ºÇǵå·Î À̵¿½ÃŰ°í ½ÍÀ» ¶§´Â ±×°ÍÀ» °í·ÁÇÑ °è»êÀÌ
ÇÊ¿äÇÏ°Ô µË´Ï´Ù.
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
Animation
¾Ö´Ï¸ÞÀ̼ÇÀ̶õ?
ij¸¯ÅͰ¡ ¿òÁ÷À̰í ÀÖ´Â °Íó·³ º¸ÀÌ°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù.
ÇϳªÀÇ Ä³¸¯ÅÍ¿¡ ¿©·¯ °³ÀÇ À̹ÌÁö¸¦ ÁغñÇØ¼ ±×°ÍÀ» Â÷·Ê·Î ¹¦È ÇÔÀ¸·Î ¿òÁ÷À̰í ÀÖ´Â
°Íó·³ º¸ÀÌ´Â ¹æ¹ýÀÔ´Ï´Ù.
RPG¶ó¸é ij¸¯Å͸¦ °È°Ô ÇÏ´Â ¾Ö´Ï¸ÞÀ̼ÇÀÌ ÇÊ¿äÇÕ´Ï´Ù.
À§¿Í °°ÀÌ Ä³¸¯ÅͰ¡ °È°í ÀÖ´Â À̹ÌÁö¸¦ ÁغñÇϰí
A°¡ ¹¦È µÇ¸é, ´ÙÀ½Àº B¸¦ ¹¦È¡¤¡¤¡¤±× ´ÙÀ½À¸·Î C¸¦ ¹¦È
Â÷·ÊÂ÷·Ê À̹ÌÁö¸¦ ±³Ã¼Çؼ ¾Ö´Ï¸ÞÀÌ¼Ç ÇÕ´Ï´Ù.
»ùÇÿ¡¼´Â ij¸¯ÅͰ¡ °È´Â ¾Ö´Ï¸ÞÀ̼ÇÀ» °°Àº À§Ä¡¿¡¼ ¹Ýº¹ÇÕ´Ï´Ù.
ij¸¯ÅÍ´Â À§ÀÇ À̹ÌÁö¸¦ »ç¿ëÇØ¼ ¹¦ÈÇÕ´Ï´Ù.
À§ÀÇ °°Àº È帧À¸·Î ÁøÇàµË´Ï´Ù.
Ç÷¡±×´Â ´ÙÀ½¿¡ Ç¥½ÃÇÏ´Â À̹ÌÁöÀÇ ¹øÈ£¸¦ ³ªÅ¸³»°Ô µË´Ï´Ù.
void imagerender(void)
{
static int flg=1
//ij¸¯ÅÍÀÇ ¹¦È Ç÷¡±×ÀÔ´Ï´Ù
RECT rect={0,0,31,31};
if(flg==1){
//flg=1À϶§
flg=2;
rect.left=0;
rect.right=31;
}
else{
if(flg==2){
//flg=2À϶§
flg=3;
rect.left=32;
rect.right=63;
}
else{
//flg=3À϶§
flg=1;
rect.left=64;
rect.right=95;
}
}
BackSurface->BltFast(xpos, ypos, sprite, &rect, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
 
//xpos++;//ij¸¯ÅÍÀÇ XÁÂÇ¥°ª¿¡ 1 Ç÷¯½º
}
ÇöÀç´Â ´Ü¼øÈ÷ µ¿ÀÛ µË´Ï´Ù.
»ùÇÿ¡¼ º¯°æµÈ °ÍÀº À§ÀÇ ¡¸imagerender ÇÔ¼ö¡¹ »ÓÀÔ´Ï´Ù.
¿©±â¼ À̹ÌÁö´Â ¾î¶² °ÍÀ» Ç¥½ÃÇÒ±î? ¸¦ ÆÇ´ÜÇØ¼ ij¸¯Å͸¦ ¹¦ÈÇϰí ÀÖ½À´Ï´Ù.
(´ÊÀº ±âÁ¾Àº loop ÇÔ¼ö·Î ÀÛ¼ºÇÏ´Â °ÍÀÌ ÁÁ´Ù)
º»·¡´Â ¾Ö´Ï¸ÞÀ̼ÇÀº »ç¶÷ÀÌ ÀνÄÇÒ ¼ö ÀÖÀ» Á¤µµÀÇ ½ºÇǵå¿Í ²÷¾îÁö´Â ´À³¦ÀÌ ¾øµµ·Ï
¹¦ÈµÇ¾î¾ß ÇÕ´Ï´Ù.
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
ŰÀ̺¥Æ®ÀÇ ¹ß»ý
¸¹Àº °ÔÀÓÀº Ç÷¹À̾î·ÎºÎÅÍÀÇ Å°À̺¥Æ®¿¡ µû¶ó Á¶À۵˴ϴÙ.
¡¸¡èŰ¡¹¸¦ ´©¸£¸é ij¸¯ÅͰ¡ À̵¿ÇÑ´Ù¡¤¡¤¡¤¡¤°°Àº °Í
¡¸¡èŰ¡¹¸¦ ´·ÈÀ» ¶§ ij¸¯ÅÍÀÇ ÁÂÇ¥¸¦ º¯°æ½Ã۸é Ç÷¹À̾îÀÇ ¶æ
¿¡ µû¶ó ij¸¯ÅͰ¡ ¿òÁ÷ÀÌ°Ô µË´Ï´Ù.
»ùÇÿ¡´Â Ç÷¹À̾ ¡¸¡è¡¹ ¡¸¡é¡¹ ¡¸¡ç¡¹ ¡¸¡æ¡¹Å°¸¦ ´©¸£¸é
ij¸¯ÅͰ¡ À̵¿Çϵµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.
Ç÷¹À̾î·ÎºÎÅÍÀÇ Å° ÀԷ¡¤¡¤¡¤¡¤Å°º¸µå »óŸ¦ ÃëµæÇÏ´Â ÇÔ¼ö´Â ¸î °³ ÀÖ½À´Ï´Ù¸¸
¿©±â¿¡´Â ¡¸GetKeyState ÇÔ¼ö¡¹·Î ¼ÂÆÃµÇ¾î ÀÖ½À´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÈ¡¸°¡»ó ŰÄڵ塹ÀÇ »óŰ¡ ¾î¶»°Ô µÇ°í ÀÖ´ÂÁö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
¡¸°¡»ó ŰÄڵ塹¶õ Űº¸µåÀÇ Å°¿¡ ÇÒ´çµÈ ÀÎ½Ä ÄÚµå °°Àº °ÍÀÔ´Ï´Ù.
(¡¸windows.h¡¹¿¡¼ ¸ÅÅ©·Î Á¤ÀǵǾî ÀÖ´Ù)
A~Z±îÁöÀÇ Å°ÄÚµå´Â ¸ÅÅ©·ÎµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ½º½º·Î Á¤ÀÇÇÑ´Ù
ENTER ŰÀÇ °æ¿ì´Â
GetKeyState(
VK_RETURN)
À§¿Í °°ÀÌ ÇÏ¸é ¡¸ENTER Ű(¸®ÅÏ Å°)¡¹°¡ ´·ÁÁ³À» ¶§¿¡ ÇÔ¼öÀÇ
¸®ÅÏ °ªÀ¸·Î¼ ¡¸Á¦ÀÏ À§ ºñÆ®¿¡ 1¡¹À» ¸®ÅÏÇÕ´Ï´Ù.
´·ÁÁöÁö ¾Ê¾ÒÀ» ¶§´Â ¡¸Á¦ÀÏ¹Ø ºñÆ®¿¡ 1¡¹ÀÌ ¸®Åϵ˴ϴÙ.
¸®ÅÏ °ªÀº ¡¸4¹ÙÀÌÆ®(16ºñÆ®)¡¹ÀÔ´Ï´Ù.
¡¸ Á¦ÀÏÀ§°¡ 1¡¹À̶ó°í ÇÏ´Â °ÍÀº ¡¸10000000000000000¡¹£¼Å°°¡ ´¸®°í ÀÖÀ» ¶§
16 Áø¼ö·Î ¡¸8000¡¹ÀÔ´Ï´Ù.
ÀÌ °ª°ú¡¸ºñÆ® ´ÜÀ§ÀÇ AND 󸮡¹¸¦ ÇÕ´Ï´Ù.
>
if(GetKeyState(VK_WNTER) &0x8000)
¡¸ºñÆ® ´ÜÀ§ÀÇ AND 󸮡¹ÀÔ´Ï´Ù.
¡¸&¿¬»êÀÚ¡¹¶ó°í »ç¿ëÇÏ´Â °ÍÀ¸·Î °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸¸¾à Ç÷¹À̾ ENTER ۸¦ ´©¸£°í ÀÖÀ¸¸é ¡¸GetKeyState¡¹¿¡´Â
¡¸10000000000000000(16ÁøÀ̶ó¸é 8000)¡¹°¡ ¸®Åϵ˴ϴÙ.
±×°Í°ú ¡¸10000000000000000(16ÁøÀ̶ó¸é 8000)¡¹´Â AND·Î ¡¸1¡¹À̶ó¸é
±× ۰¡ ´¸®°í ÀÖ´Ù´Â Àǹ̰¡ µÇ´Â °ÍÀÔ´Ï´Ù.
µ¡ºÙ¿©¼ 16ÁøÀÇ ¡¸8000¡¹ÀÇ Àü¿¡ ÀÖ´Â ¡¸0 x¡¹´Â µÚÀÇ °ªÀÌ 16ÁøÀÓÀ» ¾Ë·ÁÁÖ´Â ¿¬»êÀÚÀÔ´Ï´Ù
void KeyIvent(void)
{
if( (GetKeyState(VK_UP) & 0x8000)) ypos-=4
//¡è
if( (GetKeyState(VK_DOWN) & 0x8000)) ypos+=4
//¡é
if( (GetKeyState(VK_RIGHT) & 0x8000)) xpos+=4
//¡æ
if( (GetKeyState(VK_LEFT) & 0x8000)) xpos-=4
//¡ç
}
ÀÌ ¡¸KeyIvent ÇÔ¼ö¡¹´Â »õ·Ó°Ô Ãß°¡µÈ ij¸¯ÅÍ À̵¿À» ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ¡¸loop ÇÔ¼ö¡¹ÀÇ °è»ê 󸮸¦ Çϰí ÀÖ´Â Áß¿¡ È£ÃâµÇ°í ÀÖ½À´Ï´Ù
ó¸®ÀÇ ³»¿ëÀº Áö±ØÈ÷ ´Ü¼øÇØ ´¸° ¹æÇâÀ¸·Î ³ª¾Æ°¡°Ô Çϱâ À§ÇØ Ä³¸¯ÅÍ ÁÂÇ¥ÀÇ °ª
ÀÇ º¯È¿¡ µû¸¥ ó¸®ÀÔ´Ï´Ù.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Ŭ¸³ÇÎ
¿©Å±îÁö »ùÇÿ¡¼ À̹ÌÁö°¡ È¸é ³¡À» ¹þ¾î³ª¸é ij¸¯ÅͰ¡ ȸ鿡¼
»ç¶óÁ® ¹ö¸³´Ï´Ù.
À̰ÍÀº¡¸Å¬¸³ ¿µ¿ª¡¹À» ¼³Á¤ÇÏ¸é »ç¶óÁöÁö ¾Ê°Ô ÇÒ¼ö ÀÖ½À´Ï´Ù.
È帧Àº °ÅÀÇ À§ÀÇ ±×¸²°ú °°½À´Ï´Ù.
¿ì¼± ¡¸DirectDrawCliper ¿ÀºêÁ§Æ®¡¹¸¦ »ý¼ºÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ¿ÀºêÁ§Æ®ÀÇ ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅͰ¡ ÇÊ¿ä·Î ÇÏ´Â Æ÷ÀÎÅ͸¦ º°µµ·Î ÁغñÇÕ´Ï´Ù.
¡¸DirectDrawCliper ¿ÀºêÁ§Æ®¡¹ÀÇ Æ÷ÀÎÅÍ´Â
¡¸LPDIRECTDRAWCLIPPER¡¹·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
LPDIRECTDRAWCLIPPER LpClip
//Ŭ¸³ ¿ÀºêÁ§Æ® Æ÷ÀÎÅÍ
»ùÇÿ¡¼´Â ¡¸global.h¡¹¿¡¼ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù.
Æ÷ÀÎÅ͸¦ ÁغñÇßÀ¸¸é, ¡¸DirectDrawCliper ¿ÀºêÁ§Æ®¡¹¸¦ »ý¼ºÇÕ´Ï´Ù.
ÀÌ ¿ÀºêÁ§Æ®´Â ¡¸DRAW ¿ÀºêÁ§Æ®¡¹ÀÇ ¡¸CreateClipper ¸Þ¼Òµå¡¹·Î »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
»ùÇÿ¡¼´Â ¡¸
BOOL CreateDraw(
HWND hwnd)¡¹¿¡¼ ±× 󸮸¦ Çϰí ÀÖ½À´Ï´Ù.
¡¸Draw ¿ÀºêÁ§Æ®¡¹¸¦ »ç¿ëÇϹǷΠ¡¸Draw ¿ÀºêÁ§Æ®¡¹°¡ »ý¼ºµÈ ÈÄ¿¡ ó¸®ÇÒ
Çʿ䰡 ÀÖ½À´Ï´Ù.
dd->CreateClipper(0, &LpClip,
NULL);
Á¦ÀÏ ÆÄ¶ó¹ÌÅÍ£º»ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î Ç×»ó ¡¸0¡¹À» °Ç³×ÁÝ´Ï´Ù.
Á¦2 ÆÄ¶ó¹ÌÅÍ£ºÀÎÅÍÆäÀ̽ºÀÇ ÁÖ¼Ò¸¦ º¸°ü, À¯ÁöÇÏ´Â Æ÷ÀÎÅÍ
Á¦3 ÆÄ¶ó¹ÌÅÍ£ºÈ®Àå ÆÄ¶ó¹ÌÅÍ·Î DirectX5¿¡¼´Â ¡¸
NULL¡¹À̿ܶó¸é ¿¡·¯°¡ ¹ß»ýµË´Ï´Ù
ÆÄ¶ó¹ÌÅÍ´Â ¡¸Á¦2 ÆÄ¶ó¹ÌÅÍ¡¹¸¸ÀÌ Áß¿äÇÕ´Ï´Ù.
¿©±â¿¡´Â ¹æ±Ý Àü Á¤ÀÇÇÑ ¿ÀºêÁ§Æ®ÀÇ Æ÷ÀÎÅ͸¦ °Ç³×ÁÝ´Ï´Ù.
À̰ÍÀ¸·Î ¡¸DirectDrawCliper ¿ÀºêÁ§Æ®¡¹°¡ »ý¼ºµÆ½À´Ï´Ù.
±×·³ Ŭ¸³ ¿ÀºêÁ§Æ®°¡ »ý¼ºµÇ¾úÀ¸¹Ç·Î ¿µ¿ªÀ» ¼³Á¤ÇØ ¼ÆäÀ̽º¿¡ °Ç³×ÁÖ´Â ÀÛ¾÷À» ÇսôÙ.
ÀÌ Å¬¸³ ±â´ÉÀ» »ç¿ëÇÏ¸é ¼ÆäÀ̽º»ó¿¡ º¹¼öÀÇ Å¬¸³ ¿µ¿ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸³ª,
¿©±â¿¡¼´Â 640¡¿480(¹¦È ¿µ¿ªÀüü)À» Ŭ¸³ ¿µ¿ªÀ¸·Î ÇսôÙ.
¸¸¾à ¹¦È ¿µ¿ªÀüüÀܸ̿¦ Ŭ¸³ ¿µ¿ªÀ¸·Î¼ ¼³Á¤ÇÏ°í ½ÍÀº °æ¿ì´Â ½º½º·Î ÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù.
ÀÌ Å¬¸³ ±â´ÉÀÇ Ã³¸®´Â ¹«°Å¿ì¹Ç·Î Ŭ¸³ ¿ÀºêÁ§Æ®¿¡ ¸Ã±â´Â °Íº¸´Ù ½º½º·Î Ŭ¸³ ¿µ¿ªÀ» ½º½º·Î ÇÁ·Î±×·¥(ÁöÁ¤)ÇÏ´Â °ÍÀÌ °í¼ÓÀ̱⠶§¹®ÀÔ´Ï´Ù.
¿©±â¼ ÇϳªÀÇ Å¬¸³ ¿ÀºêÁ§Æ®ÀÇ ¼Ò°³¸¦ ÇßÀ¸³ª ¾îµð±îÁö³ª ÇϳªÀÇ ¿¹ÀÏ »ÓÀÔ´Ï´Ù.
if(LpClip->SetHWnd( 0, hwnd )!= DD_OK)
return FALSE;
Ŭ¸³ ¿ÀºêÁ§Æ®°¡ »ý¼ºµÇ¸é ¹Ù·Î ¿ÀºêÁ§Æ®ÀÇ ¡¸SetHWnd ¸Þ¼Òµå¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é ±× À©µµ¿ì ÇÚµé(hwnd)ÀÇ ¿µ¿ªÀ» Ŭ¸³ ¿µ¿ªÀ¸·Î
¿ÀºêÁ§Æ®¿¡ µî·ÏÇØ ÁÝ´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅÍ£ºÇ×»ó 0ÀÔ´Ï´Ù
Á¦2 ÆÄ¶ó¹ÌÅÍ£ºÀ©µµ¿ì ÇÚµéÀ» °Ç³×ÁÝ´Ï´Ù.
¸¸¾à Ŭ¸³ ¿µ¿ªÀ» ÀÓÀÇÀÇ À§Ä¡·Î ÇÏ°í ½ÍÀº °æ¿ì´Â ¡¸setClipList ¸Þ¼Òµå¡¹
¿¡ ¿µ¿ªÀÇ »çÀÌÁ °Ç³×ÁÝ´Ï´Ù.
±×¸®°í ¸¶Áö¸·¿¡¡¤¡¤¡¤¡¤¡¤
if(BackSurface->SetClipper(LpClip) !=DD_OK)
return FALSE//¼ÆäÀ̽º¿¡ Ŭ¸³ ¼ÂÆÃ
¡¸SetClipper ¸Þ¼Òµå¡¹¸¦ »ç¿ë ¼ÆäÀ̽º¿¡ Ŭ¸³ ¿µ¿ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ´Â ¡¸Å¬¸®ÆÛ ¿ÀºêÁ§Æ® ÀÎÅÍÆäÀ̽º¡¹ÀÇ Æ÷ÀÎÅÍÀÔ´Ï´Ù.
¹é¼ÆäÀ̽º¿¡ Ŭ¸³ ¿µ¿ªÀ» ¼¼Æ® ÇÕ´Ï´Ù
´ë»óÀÌ ¡¸¹é¼ÆäÀ̽º¡¹¶ó°í ÇÏ´Â °Í¿¡ ÁÖÀÇÇϽʽÿÀ.
¹¦È ÇÔ¼ö ¡¸Blt ¸Þ¼Òµå¡¹·Î ¹¦È¸¦ ½Ç½ÃÇÏ´Â ¼ÆäÀ̽º´Â ¡¸¹é¼ÆäÀ̽º¡¹À̹ǷÎ
¡¸ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º¡¹¿¡ Ŭ¸³ ¿µ¿ªÀ» ¼³Á¤Çصµ Àǹ̰¡ ¾ø½À´Ï´Ù.
º¸Ãæ
Ŭ¸³ ±â´ÉÀº ¡¸Blt ¸Þ¼Òµå¡¹·Î ¹Û¿¡ È¿°ú¸¦ ¹ßÈÖÇÏÁö ¾Ê±â ¶§¹®¿¡ ij¸¯ÅÍÀÇ ¹¦È¸¦ Çϴ¡¸BltFast¡¹¿¡¼ ¡¸Blt¡¹·Î º¯°æµÇ¾î ÀÖ½À´Ï´Ù.
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
È®´ë, Ãà¼Ò ¹¦È
Àü¼Û ¸Þ¼ÒµåÀÎ ¡¸Blt¡¹¸¦ »ç¿ëÇϸé È®´ë¡¤Ãà¼Ò ¹¦È°¡ °£´ÜÇÕ´Ï´Ù.
À̰ÍÀº ¡¸Blt¡¹ÀÇ ÆÄ¶ó¹ÌÅ͸¸À¸·Î ÇÒ ¼ö ÀÖÀ¸¹Ç·Î °£´ÜÇÕ´Ï´Ù.
HRESULT Blt(
LP
RECT lpDest
Rect,
LPDIRECTDRAWSURFACE3 lpDDSrcSurface,
LP
RECT lpSrc
Rect,
DWORD dwFlags,
LPDDBLTFX lpDDBltFx
);
¡¸Blt ¸Þ¼Òµå¡¹ÀÇ ÆÄ¶ó¹ÌÅÍ´Â À§¿¡ ÀÖ´Â ´ë·Î ÀÔ´Ï´Ù.
È®´ë Ãà¼Ò¸¦ ½Ç½ÃÇÏ´Â ÆÄ¶ó¹ÌÅÍ´Â Á¦1 ÆÄ¶ó¹ÌÅÍÀ̹ǷΠÀÌ ÆÄ¶ó¹ÌÅ͸¦ ¹Ù²Ù´Â °ÍÀ¸·Î È®´ë Ãà¼Ò°¡ °¡´ÉÇÏ°Ô µË´Ï´Ù.
32¡¿32 µµÆ®ÀÇ À̹ÌÁöÀÇ °æ¿ì
º¸Åë ¹¦È(Å©±â´ë·Î)
Á¦1 ÆÄ¶ó¹ÌÅÍÀÇ
RECT ±¸Á¶Ã¼ÀÇ °ªÀ»¡¤¡¤¡¤¡¤
RECT.LEFT=0;
RECT.TOP=0;
RECT.RIGHT=31;
RECT.BOTTOM=31;
32 µµÆ®´Â 0~31±îÁö·Î 32 µµÆ®ÀÔ´Ï´Ù
È®´ë ¹¦È
Á¦1 ÆÄ¶ó¹ÌÅÍÀÇ
RECT ±¸Á¶Ã¼ÀÇ °ªÀ»¡¤¡¤¡¤¡¤
RECT.LEFT=0;
RECT.TOP=0;
RECT.RIGHT=31º¸´Ù À§ÀÇ °ª;
RECT.BOTTOM=31º¸´Ù À§ÀÇ °ª;
Ãà¼Ò ¹¦È
Á¦1 ÆÄ¶ó¹ÌÅÍÀÇ
RECT ±¸Á¶Ã¼ÀÇ °ªÀ»¡¤¡¤¡¤¡¤
RECT.LEFT=0;
RECT.TOP=0;
RECT.RIGHT=31º¸´Ù ¾Æ·¡ÀÇ °ª;
RECT.BOTTOM=31º¸´Ù ¾Æ·¡ÀÇ °ª;
Âü°í·Î Á¦1 ÆÄ¶ó¹ÌÅ͸¦ ¡¸null¡¹·Î Çϸé ȸé Àüü¿¡ È®´ë ¹¦È µË´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅ͸¦ µ¿ÀûÀ¸·Î º¯È¯½Ã۸é Á¶±Ý¾¿ È®´ë³ª Ãà¼ÒÇÏ´Â °Íµµ °¡´ÉÇÏ°Ô µË´Ï´Ù.
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
ȸé È¿°ú
À̹øÀº ȸéÀ» ÁöÁ¤ÇÑ »öÀ¸·Î ÀüºÎ ÆäÀÎÆ®Çϴ ó¸®¸¦ ½Ç½ÃÇսôÙ.
¾îµåº¥ÃÄ °ÔÀӵ¼ »ç¿ëµÇ´Â ¡¸ÆäÀÌµå¾Æ¿ô¡¹ÀÔ´Ï´Ù.
À§ÀÇ °°Àº ȸé È¿°ú¸¦ º¸½ÅÀûÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù.
°ËÀº ºÎºÐ(ÀüºÎ Ä¥ÇØÁø ºÎºÐ)ÀÌ ¼¼È÷ ÆÛÁ®°¡ ȸéÀÌ ¾îµÓ°Ô µÇ´Â
ȸé È¿°úÀÔ´Ï´Ù.
ÀÌ È¿°ú´Â¡¸All Paint¡¹¸¦ ¼ÂÆÃÇÏ¸é °£´ÜÇÏ°Ô °¡´ÉÇÕ´Ï´Ù.
¿ì¼±Àº Ű ÄÚµåÀÇ Á¤ÀǸ¦ ¸ðµÎ ÇÕ´Ï´Ù.
#define VK_A 0x41
//aŰ
#define VK_B 0x42
//bŰ
#define VK_C 0x43
//cŰ
#define VK_D 0x44
//dŰ
#define VK_E 0x45
//eŰ
#define VK_F 0x46
//fŰ
#define VK_G 0x47
//gŰ
#define VK_H 0x48
//hŰ
#define VK_I 0x49
//iŰ
#define VK_J 0x4A
//jŰ
#define VK_K 0x4B
//kŰ
#define VK_L 0x4C
//lŰ
#define VK_M 0x4D  
//mŰ
#define VK_N 0x4E
//nŰ
#define VK_O 0x4F
//oŰ
#define VK_P 0x50
//pŰ
#define VK_Q 0x51
//qŰ
#define VK_R 0x52
//rŰ
#define VK_S 0x53
//sŰ
#define VK_T 0x54
//tŰ
#define VK_U 0x55
//uŰ
#define VK_V 0x56
//vŰ
#define VK_W 0x57  
//wŰ
#define VK_X 0x58
//xŰ
#define VK_Y 0x59
//yŰ
#define VK_Z 0x5A
//zŰ
ALL PAINTING ¹æ¹ý
¡¸Blt ¸Þ¼Òµå¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
¡¸Blt ¸Þ¼Òµå¡¹´Â À̹ÌÁö Àü¼Ûµµ ÇÏÁö¸¸, ±¸ÇüÀ» ÀüºÎ ÆäÀÎÆ®ÇÏ´Â ±â´Éµµ ÀÖ½À´Ï´Ù.
HRESULT Blt(
LP
RECT lpDest
Rect,
 
//Àü¼ÛÇÒ °÷ÀÇ ¼ÆäÀ̽ºÀÇ ¹¦È À§Ä¡(RECT ±¸Á¶Ã¼)
LPDIRECTDRAWSURFACE3 lpDDSrcSurface,
 
//Àü¼ÛÇØ ¿Ã °÷ÀÇ ¼ÆäÀ̽º
LP
RECT lpSrc
Rect,
 
//Àü¼ÛÇØ ¿Ã °÷ÀÇ ¼ÆäÀ̽ºÀÇ Àü¼Û ¿µ¿ª(RECT ±¸Á¶Ã¼)
DWORD dwFlags,
 
//Àü¼Û Ç÷¡±×
LPDDBLTFX lpDDBltFx
 
//Ç÷¡±×¿¡ ÀÇÇØ ÀÌ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÑ´Ù
);
Blt ¸Þ¼ÒµåÀÇ ÆÄ¶ó¹ÌÅÍ´Â À§¿¡ ÀÖ´Â ´ë·Î ÀÔ´Ï´Ù.
(ÇïÇÁÂüÁ¶)
ALL PAINT¿¡¼ Áß¿äÇÑ °ÍÀº Á¦4 ÆÄ¶ó¹ÌÅÍ¿Í Á¦5 ÆÄ¶ó¹ÌÅÍÀÔ´Ï´Ù.
Ç÷¡±×¾È¿¡ ¡¸DDBLT_COLORFILL¡¹¶ó°í ÇÏ´Â Ç÷¡±×°¡ ÀÖ½À´Ï´Ù.
À̰ÍÀº Á¦5 ÆÄ¶ó¹ÌÅÍ·Î °Ç³×ÁÖ´Â ¡¸DDBLTFX ±¸Á¶Ã¼¡¹¿¡ °Ý³³µÈ ¡¸Ä÷¯¡¹
¸¦ »ç¿ëÇØ Àü¼ÛÇÒ °÷ÀÇ ¼ÆäÀ̽º¸¦ All Pa
int ÇÏ´Â Ç÷¡±×ÀÔ´Ï´Ù.
ÀÌ Ç÷¡±×¸¦ Á¦4 ÆÄ¶ó¹ÌÅÍ·Î ¼³Á¤ÇÔÀ¸·Î ¡¸Blt ¸Þ¼Òµå¡¹´Â ALL PAINT ±â´ÉÀÌ µË´Ï´Ù.
BackSurface->Blt(
NULL,
NULL,
NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
À§´Â ȸé Àüü¸¦ ALL PAINTINGÇÒ ¶§ÀÇ ¡¸Blt ¸Þ¼Òµå¡¹»ç¿ë ¿¹ÀÔ´Ï´Ù.
DDBLTFX ±¸Á¶Ã¼
PaintÀÇ Ä÷¯¸¦ °Ý³³¸¸À» ÇÏ´Â ±¸Á¶Ã¼°¡ ¾Æ´Ï°í ¿©·¯ °¡Áö ¿ëµµ¿¡ »ç¿ëµÇ´Â ±¸Á¶Ã¼ÀÔ´Ï´Ù.
(ÇïÇÁÂüÁ¶)
¿©±â¼ Áß¿äÇÑ ¸â¹ö´Â ¡¸dwFillColor¡¹ÀÔ´Ï´Ù.
ÀÌ ¸â¹ö¿¡ ALL PAINTINGÇÏ´Â Ä®¶ó°ªÀ» °Ý³³ÇØ Blt ¸Þ¼Òµå¿¡ °Ç³×ÁÝ´Ï´Ù.
»ç¿ë¿¹
DDBLTFX ddbltfx;
ddbltfx.dwSize=
sizeof(ddbltfx);
ddbltfx.dwFillColor=0;
BackSurface->Blt(
NULL,
NULL,
NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
À§´Â ȸé Àüü¿¡ All PaintingÇÒ ¶§ÀÇ ±¸Ã¼ÀûÀÎ ¿¹ÀÔ´Ï´Ù.
ÀÌ Ã³¸®´Â Áö³ ¹ø¿¡¼´Â ¼ÆäÀ̽º ÃʱâÈ·Î »ç¿ëµÇ°í ÀÖ¾ú½À´Ï´Ù.
(render ÇÔ¼ö·Î ¼ÆäÀ̽º¸¦ BLACKÀ¸·Î All PaintingÇØ¼ ¾²·¹±âÀ̹ÌÁö°¡ Ç¥½ÃµÇÁö ¾Ê°Ô Çϴ ó¸®ÀÔ´Ï´Ù)
±×·± ´ÙÀ½ ¼ÆäÀ̽ºÀÇ ¾î´À ºÎºÐÀ» All PaintingÇÒ±î?±× °ªÀ»
RECT ±¸Á¶Ã¼¿¡ °Ý³³ÇØ
Blt ·Î ÆäÀÎÆ®ÇÕ´Ï´Ù.
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
¹®ÀÚ ¹¦È
¿©±â¼´Â ȸ鿡 ij¸¯ÅÍ ¶óÀÎÀ» ¹¦È¸¦ ÇÕ´Ï´Ù.
À§¿Í °°ÀÌ Ä³¸¯ÅÍ ¶óÀÎÀÇ ¹¦È°¡ °¡´ÉÇÕ´Ï´Ù.
Çϳª´Â ¹®ÀÚÀÇ ¹è°æÀÌ Åõ°ú Çϰí ÀÖÁö ¾Ê´Â ij¸¯ÅÍ ¶óÀΡ¤¡¤¡¤¡¤
¶Ç Çϳª´Â Åõ°ú ÇØ ¹¦È ÇÒ ¼ö Àִ ij¸¯ÅÍ ¶óÀÎÀÔ´Ï´Ù.
Åõ°ú ÇÒ ¼ö Àִ ij¸¯ÅÍ ¶óÀÎÀÌ °ÔÀÓ¿¡¼ º¸´Ù ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù.
±×·¯³ª Åõ°úµÇ´Â ÂÊÀÇ Ã³¸®°¡ Á¶±Ý º¹ÀâÇÕ´Ï´Ù.
Ãß°¡µÈ ºÎºÐÀº ¡¸
void render(void)¡¹ºÎºÐÀÔ´Ï´Ù.
Åõ°ú ÇÏÁö ¾Ê´Â ¹¦È
HDC hdc;
BackSurface->GetDC(&hdc);
//¹é ¹öÆÛÀÇ µð¹ÙÀ̽º ÄÜÅØ½ºÆ® Ãëµæ
SetBkColor(hdc, 0);
//µð¹ÙÀ̽º ÄÜÅØ½ºÆ®·Î ÁöÁ¤»öÀ» ¼ÂÆÃ
SetTextColor(hdc, RGB(255,255,255));
//¹®ÀÚÀÇ »öÀ» ¼ÂÆÃ
TextOut(hdc, 300,280,
" Å×½ºÆ®~", 8);
//ij¸¯ÅÍ ¶óÀΠǥ½Ã
BackSurface->ReleaseDC(hdc);
//µð¹ÙÀ̽º ÄÜÅØ½ºÆ® ÇØ¹æ
󸮴 À§¿Í °°ÀÌ µË´Ï´Ù.
HDC hdc;
µð¹ÙÀ̽º ÄÜÅØ½ºÆ®(ÀÌÇÏ£ºDC)°¡ ÇÊ¿äÇÏ°Ô µÇ¹Ç·Î ¿©±â¼ Á¤ÀÇÇÕ´Ï´Ù.
BackSurface->GetDC(&hdc);
¹¦È ´ë»óÀÎ ¼ÆäÀ̽º¡¤¡¤¡¤¡¤¹é ¹öÆÛÀÇ DC¸¦ ¾òÀ¸·Á¸é, ¹é ¹öÆÛÀÇ ¡¸GetDC ¸Þ¼Òµå¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ´Â DC¿¡ÀÇ ÁÖ¼ÒÀÔ´Ï´Ù.
SetBkColor(hdc, 0);
ÀÌ ÇÔ¼ö´Â ÁöÁ¤ÇÑ DCÀÇ ¹è°æÀ» All PaintÇÕ´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅͰ¡ ¹è°æ¿¡ All PaintÇÏ°í ½ÍÀº DC.
Á¦2 ÆÄ¶ó¹ÌÅͰ¡ All PaintÇÏ´Â Ä÷¯ÀÔ´Ï´Ù.
SetTextColor(hdc, RGB(255,255,255));
ÁöÁ¤ÇÑ DCÀÇ ÅØ½ºÆ® Ä÷¯¸¦ º¯°æÇÕ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ´Â ¡¸SetBkColor¡¹¿Í °°½À´Ï´Ù.
TextOut(hdc, 300,280,
" Å×½ºÆ®~", 8);
DC°¡ °¡¸®Å°´Â ¸Þ¸ð¸® ¿µ¿ª¿¡ ¹¦È¸¦ ½Ç½ÃÇÕ´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅÍ£ºµð¹ÙÀ̽º ÄÜÅØ½ºÆ®
Á¦2 ÆÄ¶ó¹ÌÅÍ£º¹¦ÈÇÒ °÷ XÁÂÇ¥
Á¦3 ÆÄ¶ó¹ÌÅÍ£º¹¦ÈÇÒ °÷ YÁÂÇ¥
Á¦4 ÆÄ¶ó¹ÌÅÍ£º¹¦ÈÇÒ Ä³¸¯ÅÍ ¶óÀÎÀÇ Æ÷ÀÎÅÍ
Á¦5 ÆÄ¶ó¹ÌÅÍ£º¹¦ÈÇÒ ¹®ÀÚ¼ö
BackSurface->ReleaseDC(hdc);
¿©±â¼ DC´Â ºÒÇÊ¿äÇÏ°Ô µÇ¹Ç·Î ÇØ¹æ 󸮸¦ ÇÕ´Ï´Ù.
ÇØ¹æµµ ¼ÆäÀ̽ºÀÇ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
¡¸ReleaseDC¡¹°¡ ÇØ¹æÀÇ ¸Þ¼ÒµåÀÔ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ´Â DCÀÔ´Ï´Ù
À̰ÍÀ¸·Î ¹®ÀÚ¸¦ ¹¦È ÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.
±×·¯³ª À̰ÍÀº ¡¸Åõ°ú ÇÏÁö ¾Ê´Â´Ù¡¹ °ÍÀ¸·Î ¿ëµµ°¡ ²Ï ÇÑÁ¤µÇ¾î ÀÖ½À´Ï´Ù.
´ÙÀ½À¸·Î Åõ°ú µÇ´Â ij¸¯ÅÍ ¶óÀÎ ¹¦È¸¦ ½Ç½ÃÇÕ´Ï´Ù(½ºÇÁ¶óÀÌÆ®).
Åõ°ú ÇÏ´Â ¹¦È(½ºÇÁ¶óÀÌÆ® ¹¦È)
¹«¾ùÀΰ¡ ¾î·Á¿ï °Í °°Àº Åõ°úµÇ´Â ij¸¯ÅÍ ¶óÀÎÀÇ ¹¦ÈÀÔ´Ï´Ù¸¸ API ÇÔ¼ö·Î °¡´ÉÇÕ´Ï´Ù.
°Ô´Ù°¡ Åõ°ú ÇÏÁö ¾Ê´Â ij¸¯ÅÍ ¶óÀÎ ¹¦È¿Í ±×´ÙÁö ´Ù¸¥Á¡Àº ¾ø½À´Ï´Ù.
HDC Fhdc;
char str[]={
"½ºÇÁ¶óÀÌÆ®È¿°ú Å×½ºÆ®!!"};
BackSurface->GetDC(&Fhdc);
//¹é ¹öÆÛÀÇ µð¹ÙÀ̽º ÄÜÅØ½ºÆ® Ãëµæ
SetBkMode(Fhdc, TRANSPARENT);
//µð¹ÙÀ̽º ÄÜÅØ½ºÆ®·Î ÁöÁ¤»öÀ» ¼ÂÆÃ
SetTextColor(Fhdc, RGB(250,250,250));
//¹®ÀÚÀÇ »öÀ» ¼ÂÆÃ
TextOut(Fhdc, 120,120, str,
strlen(str));
//ij¸¯ÅÍ ¶óÀΠǥ½Ã
BackSurface->ReleaseDC(Fhdc);
//µð¹ÙÀ̽º ÄÜÅØ½ºÆ® ÇØ¹æ
Áß¿äÇÑ Ãß°¡Á¡Àº ÁøÇÑ ¹®ÀÚ·Î µÇ¾îÀÖ´Â ºÎºÐÀÔ´Ï´Ù.
Åõ°ú ÇÏÁö ¾Ê´Â ¹®ÀÚ ¹¦ÈÀÇ °æ¿ì´Â ¡¸SetBk
Color ÇÔ¼ö¡¹¿´½À´Ï´Ù.
ÀÌ ÇÔ¼ö´Â ¹è°æ»öÀ» ¼³Á¤ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù¸¸,
À̹ø »ç¿ëÇÏ´Â ¡¸SetBkMode¡¹´Â ÆÄ¶ó¹ÌÅÍ¿¡ ¹è°æÀ» Åõ°úÇÏ´Â ÆÄ¶ó¹ÌÅͰ¡ ÀÖ½À´Ï´Ù.
Á¦2 ÆÄ¶ó¹ÌÅÍÀÇ ¡¸TRANSPARENT¡¹°¡ ±×°ÍÀÔ´Ï´Ù.
À̰ÍÀ» °Ç³×ÁÖ°í ¹¦È ÇÒ ¶§, ¹¦ÈÇÒ °÷ÀÇ ¹è°æÀ» ³²±â¸é¼ ¹®ÀÚ¸¦ ¹¦ÈÇÏ°Ô µË´Ï´Ù.
±× ¿ÜÀÇ º¯°æÀº ±×´ÙÁö ÁÖÀÇÇÏÁö ¾ÊÀ¸¼Åµµ ±¦Âú½À´Ï´Ù.
ij¸¯ÅÍ ¶óÀÎÀ» º¯¼ö·ÎºÎÅÍ Àаí ÀÖ´Â °Í°ú ¹®ÀÚ¼ö¸¦ ÇÔ¼ö·Î ¿ä±¸Çϰí ÀÖ´Â µî¡¤¡¤¡¤´ë¼ö·ÓÁö ¾ÊÀº °ÍÀÔ´Ï´Ù.
¾î¶®½À´Ï±î?
ij¸¯ÅÍ ¶óÀÎÀÇ ¹¦È´Â ÀÌÇØÇÒ ¼ö ÀÖ¾ú´ÂÁö¿ä?
±×·¸Áö¸¸, WindowsÀÇ ½Ã½ºÅÛ ÆùÆ®´Â °ÔÀÓ¿¡ ¸ÂÁö ¾Ê´Â´Ùµç°¡ ¾È ¾î¿ï¸°´Ù°í
»ý°¢ÇÏÁö ¾Ê½À´Ï±î?
°¡´ÉÇÏ´Ù¸é ÆùÆ®¸¦ ½º½º·Î ¸¸µéµµ·Ï ÇսôÙ. À̹ÌÁö·Î¼ ÆùÆ®¸¦ ÁغñÇØ ¹¦È Çϸé
ÈÙ¾À º¸±â ÁÁÀ» °ÍÀ̶ó »ý°¢ÇÕ´Ï´Ù.
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
Ä®¶ó Ű
Ä®¶ó Ű´Â À̹ÌÁö¿¡ ÀÖ´Â Ä®¶ó¸¦ ¹«È¿·Î ÇØ¼ ¡¸½ºÇÁ¶óÀÌÆ®¡¹¸¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
(¼±ÅÃÇÑ Ä®¶ó°¡ Åõ¸íó¸® µÈ´Ù = ½ºÇÁ¶óÀÌÆ®)
ÀÌ Ã³¸®´Â »ùÇÿ¡¼ ¡¸loadbmp ÇÔ¼ö¡¹·Î ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
¿©±â¼ ±×¡¸Ä®¶ó Ű¡¹¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
Ä®¶ó Ű¼ÂÆÃ
Ä®¶ó Ű´Â ¼ÆäÀ̽º¿¡ ´ëÇØ¼ ¼³Á¤ÀÌ °¡´ÉÇÕ´Ï´Ù.
»ùÇÃÀÇ ¡¸loadbmp ÇÔ¼ö¡¹´Â ÁöÁ¤ÇÑ BMP ÆÄÀϰú °°Àº »çÀÌÁîÀÇ ¼ÆäÀ̽º¸¦
»ý¼ºÇؼ¡¤¡¤¡¤¡¤±× ¼ÆäÀ̽º¿¡ Ä®¶ó ۸¦ ¼ÂÆÃÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
DDSURFACEDESC2 ddsd;
memset(&ddsd, 0,
sizeof(ddsd));
ddsd.dwSize =
sizeof(ddsd);
//¼ÆäÀ̽º¸¦ Àá±Þ´Ï´Ù
surface->Lock(
NULL, &ddsd, DDLOCK_WAIT |
DDLOCK_SURFACEMEMORYPTR,
NULL);
char *p=(
char *) ddsd.lpSurface;
//Á»ó°¢ÀÇ Ä®¶ó¸¦ Åõ°úÄ®¶ó·Î ÇÕ´Ï´Ù
DWORD transparent=*(
DWORD *) p;
//¼ÆäÀ̽ºÀÇ ·ÏÀ» ÇØÁ¦ÇÕ´Ï´Ù
surface->Unlock(
NULL);
// Åõ°úÄ®¶óÀÇ ¼³Á¤
DDCOLORKEY ddck;
ddck.dwColorSpaceLowValue=transparent;
ddck.dwColorSpaceHighValue=transparent;
surface->SetColorKey(DDCKEY_SRCBLT, &ddck);
À§´Â ¡¸loadbmp ÇÔ¼ö¡¹ÀÇ Ä®¶ó Ű¼Â ó¸®ÀÇ ÇàÀÔ´Ï´Ù.
¡¸¼ÆäÀ̽º Á÷Á¢ ¾ï¼¼½º¡¹ ¹æ¹ýÀ¸·Î À̹ÌÁöÀÇ Á»ó 1µµÆ®ÀÇ Ä®¶ó¸¦
Ä®¶ó Ű·Î¼ ¼ÂÆÃÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
¡¸¼ÆäÀ̽º Á÷Á¢ ¾ï¼¼½º¡¹´Â ¾ÆÁ÷ ¼³¸íÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ ¸ð¸£´Â °ÍÀÌ
´ëºÎºÐÀ̰ÚÁö¸¸ ¡¸¼ÆäÀ̽º¡¹ÀÇ Á»ó 1 µµÆ®ÀÇ Ä®¶óÁ¤º¸¸¦ ÃëµæÇÏ´Â ÀÛ¾÷À» ½Ç½ÃÇØ¼
(Á÷Á¢ ¾ï¼¼½º´Â ¿©·¯°¡Áö ÀÏÀÌ »ý±ä´Ù)
ÃëµæÇÑ Ä®¶óÁ¤º¸¸¦ ¡¸DDCOLORKEY ±¸Á¶Ã¼¡¹¿¡ °Ç³×ÁÖ¾î ¼ÆäÀ̽º¿¡¼
¡¸SetColorKey ¸Þ¼Òµå¡¹¸¦ ¼ÂÆÃÇÕ´Ï´Ù.
À̹øÀº ¡¸¼ÆäÀ̽º¿¡ Á÷Á¢ ¾ï¼¼½º¡¹¿¡ ÀÇÇÑ Ä®¶ó µ¥ÀÌÅÍ ÃëµæÀ» ½Ç½ÃÇÏÁö ¾Ê°í
¡¸DDCOLORKEY ±¸Á¶Ã¼¡¹¿¡ Á÷Á¢, Åõ°ú ½ÃŰ°í ½ÍÀº Ä®¶ó¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ» ½Ç½ÃÇÕ´Ï´Ù.
¡¸DDCOLORKEY ±¸Á¶Ã¼¡¹
ÀÌ ±¸Á¶Ã¼´Â ¡¸dwColorSpaceLowValue¡¹ ¡¸dwColorSpaceHighValue¡¹ÀÇ
2°³ÀÇ ¸â¹ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
Åõ°ú ÇÏ´Â Ä®¶óÀÇ ¹üÀ§¸¦ ÀÌ ¸â¹ö¿¡ °Ç³×ÁÝ´Ï´Ù.
¡¸256ÀÌÇÏÀÇ ¸ðµåÀÇ °æ¿ì¡¹´Â Åõ°ú ÇÏ°í ½ÍÀº ¹üÀ§ÀÇ ¡¸ÆÈ·¹Æ® ³Ñ¹ö¡¹¸¦
¸â¹ö¿¡ °Ç³×ÁÝ´Ï´Ù.
¡¸±× ÀÌ»óÀÇ ¸ðµåÀÇ °æ¿ì¡¹´Â ÆÈ·¹Æ® ³Ñ¹ö°¡ ¾Æ´Ï°í Ä®¶óÀÇ ¹üÀ§¸¦ °Ç³×ÁÝ´Ï´Ù.
ÀÌ °æ¿ì °Ç³×ÁÖ´Â Ä®¶óÀÇ °ªÀº À̹ÌÁöÀÇ Çȼ¿ Æ÷¸Ë°ú °°Àº Çü½ÄÀÌ ¾Æ´Ï¸é ¾ÈµÅ±â ¶§¹®¿¡
±×°ÍÀ» Á¶»çÇÏ·Á¸é ¡¸¼ÆäÀ̽ºÀÇ Á÷Á¢ ¾ï¼¼½º¡¹¸¦ ½Ç½ÃÇØ¾ß ÇÕ´Ï´Ù.
¡¸DDCOLORKEY ±¸Á¶Ã¼¡¹¿¡ »Ì¾Æ ³»°í ½ÍÀº Ä®¶óÀÇ ¹üÀ§¸¦ ¼³Á¤Çϰí Ä®¶ó ۸¦ ¼³Á¤ÇÏ°í ½ÍÀº ¼ÆäÀ̽ºÀÇ ¡¸SetColorKey ¸Þ¼Òµå¡¹¿¡ ´Ù¸¥ ÆÄ¶ó¹ÌÅÍ¿Í ÇÔ²² °Ç³×ÁÝ´Ï´Ù.
HRESULT SetColorKey(
DWORD dwFlags,
LPDDCOLORKEY lpDDColorKey
);
¸Þ¼Òµå´Â À§¿¡ ÀÖ´Â ´ë·Î ÀÔ´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅÍ´Â Ä®¶ó ۸¦ ¼ÂÆÃ ÇÒ ¶§ Ç÷¡±×(¾î¶»°Ô ¼ÂÆÃ ÇÒ±î)
Á¦2 ÆÄ¶ó¹ÌÅÍ´Â ¡¸DDCOLORKEY ±¸Á¶Ã¼¡¹ÀÇ ÁÖ¼ÒÀÔ´Ï´Ù.
Á¦1 ÆÄ¶ó¹ÌÅÍ¿¡ °Ç³×ÁÖ´Â Ç÷¡±×
DDCKEY_COLORSPACE
±¸Á¶Ã¼°¡ Ä®¶ó ½ºÆäÀ̽º¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì ¼ÂÆÃ ÇÑ´Ù.
±¸Á¶Ã¼°¡ ´ÜÀÏÀÇ Ä®¶ó ۸¦ Æ÷ÇÔÇϰí ÀÖÀ» ¶§´Â ¼ÂÆÃÇØ¼´Â ¾È µÈ´Ù.
DDCKEY_DESTBLT
ºí·Ï Àü¼ÛÀÇ Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó Ű·Î¼ »ç¿ëµÇ´Â Ä®¶ó Ű ȤÀº
Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó ½ºÆäÀ̽º¿¡ ±¸Á¶Ã¼°¡ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì ¼ÂÆÃ ÇÑ´Ù.
DDCKEY_DESTOVERLAY
¿À¹ö·¹ÀÌ Ã³¸®ÀÇ Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó Ű·Î¼ »ç¿ëµÇ´Â Ä®¶ó Ű ȤÀº
Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó ½ºÆäÀ̽º¿¡ ±¸Á¶Ã¼°¡ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì ¼ÂÆÃ ÇÑ´Ù.
DDCKEY_SRCBLT
ºí·Ï Àü¼ÛÀÇ Àü¼ÛÇØ¿Ã °÷ÀÇ Ä®¶ó Ű·Î¼ »ç¿ëµÇ´Â Ä®¶ó Ű ȤÀº
Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó ½ºÆäÀ̽º¿¡ ±¸Á¶Ã¼°¡ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì ¼ÂÆÃ ÇÑ´Ù.
DDCKEY_SRCOVERLAY
¿À¹ö·¹ÀÌ Ã³¸®ÀÇ Àü¼ÛÇØ¿Ã °÷ÀÇ Ä®¶ó Ű·Î¼ »ç¿ëµÇ´Â Ä®¶ó Ű ȤÀº
Àü¼ÛÇÒ °÷ÀÇ Ä®¶ó ½ºÆäÀ̽º¿¡ ±¸Á¶Ã¼°¡ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì ¼ÂÆÃ ÇÑ´Ù.
Ç÷¡±×´Â À§ÀÇ Á¾·ùµîÀÌ ÀÖ½À´Ï´Ù. »óȲ¿¡ µû¶ó ¼±ÅÃÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù.
Ä®¶ó ۸¦ À¯È¿ÇÏ°Ô ÇÑ´Ù
¼ÆäÀ̽º¿¡ ¼ÂÆÃÇÑ Ä®¶ó ۸¦ À¯È¿ÇÏ°Ô ÇÏ·Á¸é, Àü¼Û ÇÔ¼ö
¡¸Blt¡¹³ª ¡¸BltFasr¡¹µîÀÇ Àü¼Û Ç÷¡±×¸¦ º¯°æÇؼ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
¿¹¸¦ µé¸é ¡¸Blt ¸Þ¼Òµå¡¹¡¤¡¤¡¤¡¤Á¦5 ÆÄ¶ó¹ÌÅÍ´Â Ç÷¡±×ÀÔ´Ï´Ù.
Ä®¶ó Ű¿¡ °üÇÑ Ç÷¡±×´Â...
DDBLT_ALPHAEDGEBLEND
Ä®¶ó ŰÀÇ Ä®¶ó¸¦ Áý¾î³»´Â À̹ÌÁöÀÇ edgeÀÇ ¾ËÆÄ ä³Î·Î¼ DDBLTFX ±¸Á¶Ã¼ÀÇ
dwAlphaEdgeBlend ¸â¹ö¸¦ »ç¿ëÇÑ´Ù.
DDBLT_KEYDEST
Àü¼ÛÇÒ °÷ÀÇ Ç¥¸é(¼ÆäÀ̽º)°ú °ü·ÃµÇ´Â Ä®¶ó ۸¦ »ç¿ëÇÑ´Ù.
DDBLT_KEYSRC
Àü¼ÛÇØ¿Ã °÷ÀÇ Ç¥¸é°ú °ü·ÃµÇ´Â Ä®¶ó ۸¦ »ç¿ëÇÑ´Ù.
DDBLT_KEYDESTOVERRIDE
Àü¼ÛÇÒ °÷ÀÇ Ç¥¸éÀÇ Ä®¶ó Ű·Î¼ DDBLTFX ±¸Á¶Ã¼ÀÇ dckDestColorkey ¸â¹ö¸¦ »ç¿ëÇÑ´Ù.
Áö±Ý±îÁöÀÇ ÇÁ·Î±×·¥µéÀº ¡¸À̹ÌÁö¡¹ÀÇ ¼ÆäÀ̽º¿¡ Ä®¶ó ۸¦ ¼³Á¤ÇØ µÎ°í ÀÖ¾úÀ¸¹Ç·Î
¹é¼ÆäÀ̽º¿¡ Àü¼Û ÇÒ ¶§¿¡ °Ç³×ÁÖ´Â Ç÷¡±×´Â ¡¸DDBLT_KEYSRC¡¹°¡ µË´Ï´Ù.
À̰ÍÀº Àü¼ÛÇØ¿Ã °÷ÀÎ ¡¸À̹ÌÁö ¼ÆäÀ̽º¡¹ÀÇ Ä®¶ó ۸¦ »ç¿ëÇØ Åõ°ú 󸮸¦
½Ç½ÃÇÏ´Â Ç÷¡±×ÀÔ´Ï´Ù.
À̰Ͱú ºñ½ÁÇÑ Ç÷¡±×·Î ¡¸DDBLT_KEYDEST¡¹ÀÇ °æ¿ì´Â Àü¼ÛÇÒ °÷ÀÇ ¼ÆäÀ̽ºÀÇ Ä®¶ó Ű
¸¦ »ç¿ëÇØ¼ Åõ°ú 󸮸¦ ½Ç½ÃÇÏ´Â °ÍÀÌ µË´Ï´Ù.
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
°¨¸¶ ÄÁÆ®·Ñ
256Ä®¶óÀÌ»óÀÇ ¸ðµå¿¡¼ ¡¸ÆÈ·¹Æ®¡¹ÀÇ °³³äÀÌ ¾ø±â ¶§¹®¿¡
ÆÈ·¹Æ® µ¥ÀÌÅÍÀÇ ¼öÁ¤¿¡ ÀÇÇÑ È¸é È¿°ú¸¦ ½Ç½ÃÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.
±×·¡¼ 256Ä®¶óÀÌ»óÀÇ ¸ðµå¿¡¼´Â ¡¸°¨¸¶ ÄÁÆ®·Ñ¡¹À̶ó ÇÏ´Â °ÍÀ» ½Ç½ÃÇÕ´Ï´Ù.
¡¸°¨¸¶¡¹¶õ Ä®¶óÀÇ¡¸ÈÖµµ¡¹·Î DirectDraw´Â ÀÌ °¨¸¶°ªÀ» R¡¤G¡¤BÀÇ ¼¼°¡Áö¿ä¼Ò¸¦ Çϳª ÇϳªÀÇ ¼³Á¤ÀÌ °¡´ÉÇÕ´Ï´Ù.
RÀÇ °¨¸¶°ªÀ» ¿Ã¸®¸é ÀûÄ®¶ó°¡ °Á¶µË´Ï´Ù.
°¨¸¶°ªÀ» Æò±ÕÀûÀ¸·Î Çϸé Èæ¹éÀÇ È¿°úµµ °¡´ÉÇÕ´Ï´Ù.
¶Ç °¨¸¶ ÄÁÆ®·ÑÀ» »ç¿ëÇϱâ À§ÇØ ¡¸dxguid.lib¡¹ÀÌ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇØ¾ß ÇÕ´Ï´Ù.
»ùÇÃÀº 32ºñÆ® Ä®¶ó·Î µ¿ÀÛÇÕ´Ï´Ù.
Z۸¦ ´©¸£¸é ÀûÄ®¶ó °¨¸¶°ªÀ» ³»¸³´Ï´Ù. AŰ·Î ¿Ã¸³´Ï´Ù.
X۸¦ ´©¸£¸é ³ìÄ®¶ó °¨¸¶°ªÀ» ³»¸³´Ï´Ù. SŰ·Î ¿Ã¸³´Ï´Ù.
C۸¦ ´©¸£¸é ûĮ¶ó °¨¸¶°ªÀ» ³»¸³´Ï´Ù. DŰ·Î ¿Ã¸³´Ï´Ù.
GammaControl ¿ÀºêÁ§Æ®ÀÇ »ý¼º
°¨¸¶°ªÀ» Á¶Á¤ÇÏ·Á¸é ¡¸IDirectDrawGammaControl ¿ÀºêÁ§Æ®¡¹¸¦ »ý¼ºÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ¿ÀºêÁ§Æ®´Â ¡¸¼ÆäÀ̽º¡¹ÀÇ ¡¸QueryInterface ¸Þ¼Òµå¡¹·Î »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
Âü°í¼¿¡´Â ´ëºÎºÐ ¿ÀºêÁ§Æ®¸¦ ¡¸ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º¡¹¿¡¼ »ý¼ºÇϵµ·Ï Çϰí ÀÖ½À´Ï´Ù
IDirectDrawGammaControl ¿ÀºêÁ§Æ® ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅÍ
ÀÌ Æ÷ÀÎÅÍ´Â ¡¸LPDIRECTDRAWGAMMACONTROL¡¹·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼Ò½ºÇÁ·Î±×·¥¿¡¼´Â ¡¸grobal.h¡¹¿¡ ÀÌ Æ÷ÀÎÅ͸¦ Á¤ÀÇÇß½À´Ï´Ù.
LPDIRECTDRAWGAMMACONTROL lpGamma;
//°¨¸¶ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ® Æ÷ÀÎÅÍ
ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ Á¤ÀÇÇÏ¸é ¡¸ÇÁ¶óÀ̸Ӹ®¼ÆäÀ̽º¡¹ÀÇ ¡¸QuertInterface ¸Þ¼Òµå¡¹
¸¦ »ç¿ëÇØ¼ ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇÕ´Ï´Ù.
¿ÀºêÁ§Æ®ÀÇ »ý¼ºÀº ¡¸CreateDraw ÇÔ¼ö¡¹¾È¿¡¼ ó¸®Çϰí ÀÖ½À´Ï´Ù.
ÇÁ¶óÀ̸Ӹ® ¼ÆäÀ̽º°¡ »ý¼ºµÇ¾î ÀÖÀ¸¹Ç·Î Çѹø¸¸ ½ÇÇàµÇ´Â Àå¼Ò¶ó¸é ¾îµð¶óµµ ±¦Âú½À´Ï´Ù.
HRESULT QueryInterface(
REFIID riid,
L
PVOID* obp
);
ÀÌ ¸Þ¼Òµå´Â ¡¸°¨¸¶ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®¡¹¸¦ »ý¼ºÇÏ´Â ±â´ÉÀº ¾Æ´Ï°í
ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÏ´Â ¿ÀºêÁ§Æ®°¡¡¸COM¡¹À» ¼Æ÷Æ®Çϰí ÀÖÀ»±î?¸¦ Ã½Å©ÇØ »ý¼ºÇÕ´Ï´Ù.
¡¸COM¡¹°¡ ¹«¾ùÀΰ¡ ½Å°æÀÌ ¾²À̰ÚÁö¸¸
¿©±â¿¡¼´Â ½Å°æ¾²Áö ¾Ê°í ÁøÇàÇÕ´Ï´Ù.
¡¸°¨¸¶ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®¡¹¸¦ »ý¼ºÇÏ·Á¸é, Á¦1ÆÄ¶ó¹ÌÅÍ¿¡¡¸IID_DirectDrawGammaControl¡¹
À» °Ç³×ÁÝ´Ï´Ù.
Á¦2 ÆÄ¶ó¹ÌÅÍ¿¡´Â ¡¸¿ÀºêÁ§Æ® ÀÎÅÍÆäÀ̽º¡¹ÀÇ ÁÖ¼Ò¸¦ º¸°üÇÏ´Â Æ÷ÀÎÅ͸¦ °Ç³×ÁÝ´Ï´Ù.
QueryInterface ¸Þ¼Òµå
°¨¸¶ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇϱâ À§ÇØ »ç¿ëÇÏ´Â ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÏÁö¸¸,
°¨¸¶ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®¸¦ »ý¼º¸¸ ÇÏ´Â ¸Þ¼Òµå´Â ¾Æ´Õ´Ï´Ù.
ÇïÇÁ¿¡´Â ÀÌ·¸°Ô ÀûÇô ÀÖ½À´Ï´Ù.
DirectX ±¸ÃàÀÇ ±âº»À¸·Î µÇ´Â ÄÄÆÛ³ÍÆ® ¿ÀºêÁ§Æ® ¸ðµ¨ (COM)Àº ÈĹæ ȣȯ¼º¿¡ ¿µÇâÀ» ÁÖ´Â ÀÏ ¾øÀÌ
»õ·Î¿î ÀÎÅÍÆäÀ̽º·Î »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Â °ÍÀ¸·Î Çϰí ÀÖ´Ù.
À̰ÍÀ¸·Î IDirectDraw ÀÎÅÍÆäÀ̽º´Â IDirectDraw2 ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ ¿Å°Ü³õÀ» ¼ö ÀÖ´Ù.
ÀÌ »õ·Î¿î ÀÎÅÍÆäÀ̽º¸¦ ¾òÀ¸·Á¸é ´ÙÀ½ÀÇ C++ ÀÇ ¿¹¿¡ ³ªÅ¸³ªµíÀÌ IDirectDraw::QueryInterface¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù.
¡¸°¨¸¶ÄÁÆ®·Ñ ÀÎÅÍÆäÀ̽º¡¹µµ À§ÀÇ ÇïÇÁ¿¡ ÀûÇô Àִµ¥·Î ÇÏÀ§ ȣȯÀ» À¯ÁöÇϱâ À§ÇØ
¡¸QueryInterface ¸Þ¼Òµå¡¹¸¦ »ç¿ëÇØ¼ ÁöÁ¤µÈ ¿ÀºêÁ§Æ®°¡ »õ·Î¿î °ÍÀ̶ó¸é
³°Àº ¿ÀºêÁ§Æ®º¸´Ùµµ ¿ì¼±½ÃÇØ¼ »ç¿ëÇϵµ·Ï ÇÑ´Ù¡¤¡¤¡¤¡¤¡¤ÇÏ´Â ¶æÀÔ´Ï´Ù.
°¨¸¶°ªÀÇ º¯°æ
¿ÀºêÁ§Æ®µµ »ý¼ºÇßÀ¸¹Ç·Î ´ÙÀ½À¸·Î °¨¸¶°ªÀ» º¯°æÇϸé
ȸéÀÇ Ä®¶ó¸¦ º¯È½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.
°¨¸¶°ªÀº ¡¸DDGAMMARAMP ±¸Á¶Ã¼¡¹ÀÇ ¡¸red¡¹ ¡¸green¡¹ ¡¸blue¡¹ÀÇ ¸â¹ö¿¡ °¨¸¶°ªÀ»
³Ö°í ¡¸IDirectDrawGammaControl ¿ÀºêÁ§Æ®¡¹ ¡¸SetGammaRamp ¸Þ¼Òµå¡¹¿¡ ÆÄ¶ó¹ÌÅÍ
·Î °Ç³×Áֱ⸸ ÇÏ¸é µË´Ï´Ù.
°¨¸¶°ª
°¨¸¶°ªÀº ¡¸0~65535ÀÇ¡¡65536¡¹ÀÔ´Ï´Ù.
Ä®¶ó Á¤º¸´Â ¡¸0~255ÀÇ¡¡256¡¹À¸·Î Ç¥ÇöµÇ°í ÀÖ½À´Ï´Ù.
Ä®¶ó Á¤º¸ °ªÀÌ ¡¸(RED) 46¡¹À̾ú´ø °æ¿ìÀÇ °¨¸¶°ªÀº ¡¸(RED) 11776¡¹ÀÌ µË´Ï´Ù.
°¨¸¶°ª¡¡= Ä®¶ó°ª¡¿256
À§ÀÇ ½ÄÀ¸·Î °¨¸¶°ªÀÌ ±¸ÇØ Áý´Ï´Ù.
°¨¸¶°ªÀÌ ¡¸0¡¹ÀÌ µÇ¸é ¡¸Â£Àºblack¡¹¡¤¡¤¡¤¡¤¡¸65535¡¹°¡ µÇ¸é ¡¸Â£Àºwhite¡¹°¡ µË´Ï´Ù.
ColorÀÇ º¯È
¼Ò½ºÀÇ ¡¸»¡° °Á¶ 󸮡¹ÀÇ È帧À» ¿©±â¼ ¼³¸íÇÕ´Ï´Ù.
¡¸IDirectDrawGammaControl ¿ÀºêÁ§Æ®¡¹¿¡´Â ¡¸SetGammaRamp ¸Þ¼Òµå¡¹¿Í
¡¸GetGammaRamp ¸Þ¼Òµå¡¹ µÎ °³°¡ ÀÖ½À´Ï´Ù.
µÚÀÇ ¡¸GetGammaRamp ¸Þ¼Òµå¡¹´Â ÇöÀçÀÇ °¨¸¶°ªÀ» ÃëµæÇÒ ¼ö ÀÖ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.
ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇØ ¿ì¼±Àº ÇöÀçÀÇ °¨¸¶°ªÀ» ÃëµæÇÕ´Ï´Ù.
HRESULT GetGammaRamp(
DWORD dwFlags,
LPGAMMARAMP lpRampData
);
Á¦1 ÆÄ¶ó¹ÌÅÍ£ºÇ×»ó 0 ÀÔ´Ï´Ù.(ÇïÇÁÂüÁ¶)
Á¦2 ÆÄ¶ó¹ÌÅÍ£ºDDGAMMARAMP ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ
Á¦2 ÆÄ¶ó¹ÌÅÍ·Î °Ç³×ÁÖ´Â ¡¸DDGAMMARAMP ±¸Á¶Ã¼¡¹ÀÇ ¸â¹ö¿¡ ÇöÀçÀÇ °¨¸¶°ªÀÌ °Ý³³µË´Ï´Ù.
typedef struct _DDGAMMARAMP {
WORD red[256];
WORD green[256];
WORD blue[256];
} DDGAMMARAMP, FAR * LPDDGAMMARAMP;
À§°¡ ¡¸DDGAMMARAMP ±¸Á¶Ã¼¡¹ÀÔ´Ï´Ù.
ÀÌ ¡¸red¡¹ ¡¸green¡¹ ¡¸blue¡¹ÀÇ 3 ¸â¹ö·Î º¯°æÇÏ°í ½ÍÀº °¨¸¶°ªÀ» ³Ö½À´Ï´Ù.
°¢ Ä®¶óÀÇ ¿ä¼Ò¸¶´Ù ¡¸256°³ ¹è¿¡¹ÀÌ ÀÖÀ¸¹Ç·Î ¿ì¼± ·çÇÁ·Î ¸ðµç ¹è¿ ¿ä¼Ò¸¦
°íÃÄ ½á º¸¼¼¿ä.
GetGammaRamp ¸Þ¼Òµå·Î ÇöÀçÀÇ °¨¸¶°ªÀ» ÃëµæÇÏ°í ³ª¼
Àû»öÀ» °Á¶ÇÑ´Ù
Àû»öÀ» °Á¶ÇÏ´Â °æ¿ì´Â ¡¸red °¨¸¶ ¹è¿¡¹¾ÈÀÇ °ªÀ» Áõ°¡½ÃÅ´À¸·Î °¡´ÉÇÕ´Ï´Ù.
DDGAMMARAMP Gamma;
lpGamma->GetGammaRamp(0, &Gamma);
for(
int i=0;i<=255;i++){
Gamma.red[i] = Gamma.red[i]+100;
}
¡¸lpGamma¡¹´Â ¡¸IDirectDrawGammaControl ÀÎÅÍÆäÀ̽º¡¹ÀÇ Æ÷ÀÎÅÍ
À§ÀÇ ½ÄÀ¸·Î REDÀÇ °¨¸¶°ª¸¸À» 100 °Á¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.
º¯°æÀ» ÇßÀ¸¹Ç·Î º¯°æÇÑ °¨¸¶°ªÀ» ´Ù½Ã ¼ÂÆÃÇÕ´Ï´Ù.
À̰Ϳ¡´Â ¡¸SetGammaRamp ¸Þ¼Òµå¡¹¸¦ »ç¿ëÇÕ´Ï´Ù.
HRESULT SetGammaRamp(
DWORD dwFlags,
LPGAMMARAMP lpRampData
);
Á¦1 ÆÄ¶ó¹ÌÅÍ£ºÇ÷¡±×ÀÔ´Ï´Ù.
dwFlags
Flag indicating if gamma calibration is desired.
Set
this parameter DDSGR_CALIBRATE to request that the calibrator adjust the
gamma ramp according to the physical properties of the display, making the result
identical on all systems. If calibration is not needed, set
this parameter to 0.
¡¸DDSGR_CALIBRATE¡¹µçÁö ¡¸0¡¹À» °Ç³×ÁÙ °ÍÀ̶ó°í »ý°¢µË´Ï´Ù.
¡¸calibration¡¹°¡ ÇÊ¿äÇÑ ¶§´Â ¡¸DDSGR_CALIBRATE¡¹¸¦ ¼ÂÆÃÇϰí
ÇÊ¿ä ¾øÀ» ¶§¿¡ ¡¸0¡¹À» °Ç³×ÁØ´Ù ¡¤¡¤ ¶ó°í º¸ÀÔ´Ï´Ù.
¡¸SetGammaRamp ¸Þ¼Òµå¡¹°¡ ½ÇÇàµÇ¸é °ð ¹Ù·Î ȸéÀÇ Ä®¶ó´Â º¯°æµË´Ï´Ù.
Âü°í
°¨¸¶ ÄÁÆ®·ÑÀº ºñµð¿À Ä«µåÀÇ ±â´É¿¡ µû¶ó¼ µ¿ÀÛÇϱ⶧¹®¿¡
¸¸¾à ºñµð¿À Ä«µå°¡ °¨¸¶ ÄÁÆ®·Ñ¿¡ ´ëÀÀÇϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â Á¦´ë·Î µ¿ÀÛ ÇÏÁö ¾Ê½À´Ï´Ù.
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////