|
** D3DÀÌ¿ë 2DÃâ·Â½Ã ¸¶¹ýÀÇ ¼ýÀÚ -0.5 ¿¡ ´ëÇÏ¿© **
copyright¨Ï
Gamza
2008-07-06 13:37:10 Ãßõ:120 Á¶È¸:4,296

½Ã´ëµµ ½Ã´ëÀ̴ϸ¸Å CPUÀÇ Çȼ¿¿¬»êÀ» ¸ù¶¥ ¹ö¸®°í,
ºí·»µù/È®´ë/Ãà¼Ò/ÇÊÅ͸µ/¸ÖÆ¼ÅØ½ºÃĸµ/Ä÷¯½¦À̵ùµî ¼ö¸¹Àº Çϵå¿þ¾î °¡¼Ó±âÀÇ ´É·ÂÀ» »ç¿ëÇØ º¸·Á°í ¸¶À½À» ¸Ô¾ú½À´Ï´Ù.
±×·±µ¥ ¿¹Þ´Â°ÍÀÌ....D3D·Î 2DÃâ·ÂÀ» ÇØº¸´Ï...À̳ÑÀÌ »ö»óÀÌ ¹¶°³Áö´Â°Í °°±âµµ Çϰí, ÇÑ ÅØ¼¿¾¿ ¹Ð¸°´Ù°Å³ª ³¡ÂÊ¿¡ ÇѶóÀÎÀÌ »ßÁ®³ª¿À´Âµî...º¶óº° ¹®Á¦°¡ ´Ù ÀϾ´Â°Ì´Ï´Ù.
¸ð󷳸¸¿¡ Å«¸¾¸Ô°í 3D°¡¼Ó±â¸¦ ½áº¸·Á´ø ¸¶À½ÀÌ ¸¶±¸ Èçµé¸®´Â ¼ø°£ÀÔ´Ï´Ù.
ÀÌ·²¶§ ±¸¿øÀÇ ¼ýÀÚ -0.5°¡ µîÀåÇÏÁÒ.
D3D·Î 2DÃâ·ÂÇÒ¶§ x,yÁÂÇ¥¿¡¼ 0.5¸¦ »©ÁÖ¸é ÈñÇÑÇϰԵµ ±ò²ûÇÏ°Ô ³ª¿À´Â°ÍÀ» º¸°ÔµÇ´Âµ¥¿ä.
¿©±â¼± ±× Áõ»ó°ú ÀÌÀ¯¸¦ °£´ÜÈ÷ ¼³¸íµå¸®·Á°í ÇÕ´Ï´Ù.
"³ -0.5 °°Àº°Å ¾ÈÇØµµ À߸¸³ª¿À´Âµ¥.." ¶ó°í ÇϽô ºÐµéÀº...¹Ýµå½Ã ÀоîÁÖ¼¼¿ä.
1. À߸øµÈ ±¸Çö
D3D·Î 2D¸¦ Ç¥ÇöÇÏ·Á°í ÇÒ¶§ ½ÊÁßÆÈ±¸´Â ¾Æ·¡Ã³·³ À߸øµÈ ±¸ÇöÀ» ÇϰԵ˴ϴÙ.
void DrawTexture( long x, long y, long w, long h, loat tu, float tv, float tw, float th )
{
...
Vertex[0].position.x = (float)x;
Vertex[0].position.y = (float)y;
Vertex[1].position.x = Vertex[0].position.x + w;
Vertex[1].position.y = Vertex[0].position.y;
Vertex[2].position.x = Vertex[0].position.x + w;
Vertex[2].position.y = Vertex[0].position.y + h;
Vertex[3].position.x = Vertex[0].position.x;
Vertex[3].position.y = Vertex[0].position.y + h;
Vertex[0].tu = tu;
Vertex[0].tv = tv;
Vertex[1].tu = Vertex[0].tu + tw;
Vertex[1].tv = Vertex[0].tv;
Vertex[2].tu = Vertex[0].tu + tw;
Vertex[2].tv = Vertex[0].tv + th;
Vertex[3].tu = Vertex[0].tu;
Vertex[3].tv = Vertex[0].tv + th;
...
|
ÀÌÁ¦ºÎÅÍ À§Äڵ尡 ¾î°¼ À߸øµÈ ±¸ÇöÀÎÁö ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
(À§Äڵ忡¼ Vertex´Â D3DFVF_XYZRHWÆ÷¸ËÀÌ´ø, Á÷±³Åõ¿µÇà·ÄÀ» »ç¿ëÇÏ´Â D3DFVF_XYZÆ÷¸ËÀÌ´ø »ó°ü¾øÀ½.)
2. Áõ»ó
8x8 bmp ÇÑÀåÀ» ÀÐ¾î¼ 1:1 Å©±â·Î ·»´õ¸µÀ» ÇØº¾´Ï´Ù.
(ÇÑÀåÀÇ ±×¸²À» ±×³É ·»´õ¸µÇѰͰú Á¿ìµÚÁý±â, »óÇÏ µÚÁý±â, »óÇÏÁÂ¿ì µÚÁý±â¸¦ ÇÕ´Ï´Ù.)
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MAGFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MINFILTER, D3DTEXF_POINT );
DrawTexture( 1, 1, 8, 8, 0, 0, 1, 1 );
DrawTexture( 10, 1, 8, 8, 1, 0, -1, 1 );
DrawTexture( 1,10, 8, 8, 0, 1, 1, -1 );
DrawTexture( 10,10, 8, 8, 1, 1, -1, -1 );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR );
DrawTexture( 20+ 1, 1, 8, 8, 0, 0, 1, 1 );
DrawTexture( 20+10, 1, 8, 8, 1, 0, -1, 1 );
DrawTexture( 20+ 1,10, 8, 8, 0, 1, 1, -1 );
DrawTexture( 20+10,10, 8, 8, 1, 1, -1, -1 ); |
±× °á°ú´Â.....
¿À...À×..?...ÀÌ°Ô ¿ØÀÏÀԴϱî?
¿ÖÀÌ·¸°Ô µÈ°ÅÁÒ?
ÇÊÅ͸µÇÏÁö ¾Ê°í µÚÁý±â¸¦ ÇÏÁö¾ÊÀº³ÑÀº ±×·¡µµ Àß ³ª¿Â°Í °°Àºµ¥....ÀÌ·² °æ¿ì¿£ ¹®Á¦°¡ ¾ø´Â°É±î¿ä?
õ¸¸¿¡ ¸»¾¸....À̳ѵµ »ç½Ç Àß ³ª¿À´Âô ÇÏ´Â°Í »ÓÀ̰í...½ºÄÉÀϸµÀ» ÇØº¸¸é ±× À߸øµÊÀÌ ¸¸ÃµÇÏ¿¡ »Ç·ÏÀÌ ³ª¹ö¸³´Ï´Ù.
(ÀÚ½ÅÀÇ Äڵ尡 À§¿Í °°¾Ò´Ù¸é...°¢ÀÚ ÀÚ±âÄڵ带 °¡Áö°í ½ÇÇèÀ» ÇØº¾½Ã´Ù.)
3. ¿øÀÎ
D3DÀÇ ¹öÅØ½º´Â ½Ç¼öÁÂÇ¥¸¦ »ç¿ëÇÕ´Ï´Ù. ÇÏÁö¸¸ ½ºÅ©¸°ÁÂÇ¥´Â Çȼ¿ÁÂÇ¥»ÓÀÌÁÒ.
2D/3D»ó°ü¾øÀÌ ½ºÅ©¸° ÁÂÇ¥´Â ¿ø·¡ Á¤¼ö¹Û¿¡ ¾ø½À´Ï´Ù.
±×·±µ¥ 2D¿¡¼´Â Á¤¼ö·Î ÁöÁ¤ÇØ ÁÖ´ø ÁÂÇ¥¸¦, 3D¿¡¼´Â ½Ç¼ö·Î ÁöÁ¤ÇØÁà¾ß Çϴ°ÅÁÒ.
º°·Î ¹®Á¦µÉ°ÍÀÌ ¾ø´Ù°í »ý°¢ÇϽðÚÁö¸¸....À§¿¡¼ º¸½Å ¹®Á¦°¡ ¹Ù·Î À̰Ͷ§¹®ÀÔ´Ï´Ù.
±×¸²¿¡ ³ª¿ÍÀÖ´Â°Í Ã³·³ ½ºÅ©¸°ÀÇ ÁÂÃø»ó´ÜÀÇ 1x1¿µ¿ª Àüü°¡ Çȼ¿ÁÂÇ¥(0,0) ÀÔ´Ï´Ù.
D3D´Â ¿©±â¿¡ ½Ç¼öÁÂÇ¥ÀÎ Vertex(0,0)À» ÂïÀ¸¶ó°í ½Ã۸é....1x1¿µ¿ªÀÇ Áß¾Ó¿¡ Âï½À´Ï´Ù.
½ºÅ©¸° ÁÂÇ¥¿¡¼´Â 1x1¿µ¿ªÀüü°¡ (0,0)ÀÌ´Ï »ó´çÈ÷ ÀÚ¿¬½º·¯¿î °á°úÀÔ´Ï´Ù.
±×·±µ¥ ÀÌ°Ô ¹¹°¡ ¹®Á¦°¡ µÇ³Ä°í¿ä?
¹®Á¦´Â 3D´Â 2D¿Í´Â ´Þ¸® ÅØ½ºÃÄ ÁÂÇ¥·Î ÅØ¼¿ÁÂÇ¥°¡ ¾Æ´Ñ ½Ç¼öÁÂÇ¥¸¦ »ç¿ëÇѴٴ°̴ϴÙ.
¿ÞÂÊ¿¡ ÇÊÅ͸µÀ» ÇÏÁö ¾ÊÀº ±×¸²À» º¸½ÃÁÒ... ÁÂÇ¥(0,0)Àº ¹«½¼»öÀϱî¿ä? ¾Ö¸Å¸ðÈ£ÇÏÁÒ?....
ÀÌ°Ç »ç½Ç Á¤Çϱ⠳ª¸§Àε¥, ¿îÁÁ°Ôµµ D3D¿¡¼´Â ÁÂÇ¥(0,0)À» »¡°£»öÀ¸·Î Ãë±ÞÇÕ´Ï´Ù.
ÁÂÇ¥(0,0)Àº °£½ÅÈ÷...ÅΰÉÀÌ·Î »¡°£»öÀÇ ¹Ý¿(?)¿¡ ¿À¸¥¼ÀÀÌÁÒ.
ÀÌÁ¨ ¿À¸¥ÂÊ¿¡ ÇÊÅ͸µµÈ ±×¸²À» º¾½Ã´Ù. ÀÌ°Ç ¾ÆÁÖ ½±°Ô ÀÌÇØ°¡ µË´Ï´Ù. ÅØ½ºÃÄ ÁÂÇ¥(0,0)Àº ÁÖº¯ ³×°³ÀÇ »ö»óÀ» ¼¯¾î³õÀº »ö»óÀ̰í,
¼ø¼öÇÑ ÅØ½ºÃÄ »ö»óÀ» »ç¿ëÇÏ·Á¸é 0.5ÅØ¼¿À§Ä¡ ¸¦ Âï¾îÁÖ¾î¾ß ÇÕ´Ï´Ù.
...±×·³ ÀÌÁ¦ ¿ì¸®°¡ Çß´øÁþÀ» ÀçÇöÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
Çȼ¿ÁÂÇ¥(0,0)¿¡ ¹öÅØ½º(0,0)À» Âï´Âµ¥ ÅØ½ºÃÄ ÁÂÇ¥(0,0)À» ¸ÊÇÎ Çϱâ !
ÀÚ...ÀÌÁ¦ óÀ½¿¡ ³ª¿Â°á°ú°¡ ÀÌÇØ°¡ µÇ¼Ì°ÚÁÒ?
ÀÌÇØ°¡ ¾ÈµÇ½Ã´Â ºÐµéÀº.....±×¸²À» ÂùÂùÈ÷ Àß ¶â¾îº¸½Ã¸é ÀÌÇØ°¡ µÇ½Ç°Ì´Ï´Ù....^.^;;
4. ÇØ°áÃ¥
À̹®Á¦ÀÇ ÇØ°áÇÏ·Á¸é Çȼ¿°ú ÅØ¼¿ÀÌ ÀÏÄ¡Çϵµ·Ï ¸¸µé¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. 1x1Çȼ¿ÇÑÄ¿¡ 1x1ÅØ¼¿Çϳª°¡ Á¤È®È÷ ¸ÅÇεǵµ·Ï ¸¸µé¸é µÇ´Â°ÅÁÒ.
¹æ¹ýÀÌ »ý°¢³ª½Ê´Ï±î?
µÎ°¡Áö³ª »ý°¢ÀÌ ³ª½Å´Ù°í¿ä? ¿ÀÈ£....¸ÚÁö½Ê´Ï´Ù....
¾ÆÁ÷ »ý°¢ÀÌ ³ªÁö ¾ÊÀ¸½Å ºÐµéÀ» À§ÇØ ¼³¸íÀ» µå¸®ÀÚ¸é...
ù°´Â, ÅØ½ºÃÄÁÂÇ¥¿¡ ¿ÀÇÁ¼ÂÀ» »ì¦°É¾îÁÖ¾î¼, (0,0)À» ¸ÊÇÎÇÏ´Â°Ô ¾Æ´Ï°í ÁøÂ¥»ö»óÀÌ Àִ°÷...±×·¯´Ï±î...(0.5,0.5)ÅØ¼¿À§Ä¡¸¦ ¸ÊÇÎÇØÁִ°̴ϴÙ.
µÎ¹øÂ°´Â, ±×¿Í ¹Ý´ë·Î ¹öÅØ½ºÁÂÇ¥¿¡ ¿ÀÇÁ¼ÂÀ» °É¾îÁÖ´Â ¹æ½ÄÀÌÁÒ.
5. ÅØ½ºÃÄ¿¡ ¿ÀÇÁ¼Â°É¾îÁÖ±â
ÀÚ...À̰ÍÀº...ÀÌ·¸°Ô ÇÏ¸é µÉ°Í°°½À´Ï´Ù.
UV = (ÅØ¼¿ÁÂÇ¥ + 0.5f) / Texture_Size
float textureoffset = 0.5/8;
DrawTexture( ..., 0+textureoffset, 0+textureoffset, 1, 1 );
DrawTexture( ..., 1-textureoffset, 0+textureoffset, -1, 1 );
DrawTexture( ..., 0+textureoffset, 1-textureoffset, 1, -1 );
DrawTexture( ..., 1-textureoffset, 1-textureoffset, -1, -1 ); |
¿ÀÈ£...¾ÆÁÖ ±×·²½ÎÇϱº¿ä...ÇÊÅ͸µÀ» Äѵµ ±ò²ûÇÏ°Ô ¾ÆÁÖ Àß ³ª¿À³×¿ä...
±×·±µ¥ À̹æ¹ý¿£ Ä¡¸íÀûÀÎ ¹®Á¦°¡ÀÖ½À´Ï´Ù.
ÅØ½ºÃÄ¿¡ ¿ÀÇÁ¼ÂÀ» °É¾î¹ö·È±â¶§¹®¿¡ È®´ë¸¦ ÇϰԵǸé ÅØ¼¿ÀÇ Àý¹ÝÀÌ ³¯¶ó°¡¹ö¸®´Â°Ì´Ï´Ù. »Ó¸¸¾Æ´Ï¶ó º¸³Ê½º·Î »ç°¢Çü ¿µ¿ªÀÇ ¸¶Áö¸·¿¡´Â ¾µµ¥¾ø´Â ¹ÝÅØ¼¿ÀÌ µ¡ºÙ°ÔµÇÁÒ.
°á±¹ À̹æ¹ýÀº »ç¿ëÇÒ¼ö°¡ ¾ø½À´Ï´Ù.
6. ¹öÅØ½ºÁÂÇ¥¿¡ ¿ÀÇÁ¼Â°É¾îÁÖ±â
°á·ÐºÎÅÍ ¸»ÇÏÀÚ¸é À̴̰ϴÙ.
XY = (Çȼ¿ÁÂÇ¥ - 0.5f)
...
Vertex[0].position.x = (float)x - 0.5f;
Vertex[0].position.y = (float)y - 0.5f;
...
|
ÀÌ·¸°Ô ÇÏ¸é µÚÁý±â/È®´ëÃà¼Ò/ÇÊÅ͸µµî...¹«¾óÇØµµ ÀüÇô ¹®Á¦°¡ ¾ø½À´Ï´Ù.
(±Ã±ÝÇÏ¸é µûÁ®º¸¼¼¿ä......ÀúÇÑÅ× µûÁöÁö´Â ¸¶½Ã°í..^^;; )
À§¿¡¼´Â D3DFVF_XYZRHW¸¦ »ç¿ëÇÏ¿´Áö¸¸, D3DFVF_XYZ+Á÷±³Åõ¿µÇà·ÄÀÇ °æ¿ìµµ ¸¶Âù°¡Áö·Î Á¤¼öÁÂÇ¥(x,y)¿¡¼ 0.5¸¦ »©ÁÖ¸é µË´Ï´Ù. ´Ü, D3DFVF_XYZ+Á÷±³Åõ¿µÇà·ÄÀ» ¾µ¶§´Â Á÷Á¢ »©ÁÖÁö ¾Ê°í, Åõ¿µÇà·Ä¾Õ¿¡ -0.5¸¦ ÇØÁÖ´Â Çà·ÄÀ» °öÇØÁÖ¸é ¹öÅØ½º´Â ±×³É Á¤¼öÁÂÇ¥¸¦ »ç¿ëÇØµµ µÇ°ÚÁÒ.
7. ¸¶¹ýÀÇ ¼ýÀÚ 0.5
"³ª´Â ij¸¯ÅÍÁÂÇ¥¸¦ ½Ç¼ö·Î °ü¸®Çϴµ¥, ±×·³ ±×³É ij¸¯ÅÍ ÁÂÇ¥¸¦ »ç¿ëÇÏ¸é µÇ³ª?" ¶ó´Â Àǹ®À» °¡Áö½ÅºÐµµ ÀÖÀ¸½Ç °Ì´Ï´Ù.
µüÀß¶ó ¸»¾¸µå¸®ÀÚ¸é ´ë´äÀº NO ÀÔ´Ï´Ù.
½Ç¼öÁÂÇ¥¸¦ °¡Á³´Ù ÇÏ´õ¶óµµ ¹Ýµå½Ã Á¤¼ö·Î º¯È¯ÇÑ´ÙÀ½ 0.5¸¦ »©ÁÖ¾î¾ß ÇÕ´Ï´Ù.
Vertex.XY = ( (long)(xy) - 0.5f)
ÀÌÀ¯´Â ÅØ¼¿°ú Çȼ¿ÀÌ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ¾ðÁ¦µçÁö ¹®Á¦°¡ ¹ß»ýÇÒ¼ö Àֱ⶧¹®ÀÔ´Ï´Ù.
¿©±â¼´Â ±Ø´ÜÀûÀ¸·Î ij¸¯ÅͰ¡ Á¤¼ö·Î µü¶³¾îÁö´Â ÁÂÇ¥¸¦ °®´Â°æ¿ì¸¦ À§¿¡¼ º¸¿©µå·ÈÁö¸¸, (Á¤¼ö-0.5)°¡ ¾Æ´Ñ ´Ù¸¥¼ýÀÚ´Â ¸ðµÎ ¸¶Âù°¡Áö ÀÔ´Ï´Ù.
(À̹®Á¦´Â OpenGL¿¡¼µµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. ÀÓÀÇÀÇ ¼Ò¼öÁ¡À§Ä¡¿¡ »ç°¢ÇüÀ» Âï´Ùº¸¸é ¹Ýµå½Ã ¿øÇÏÁö ¾Ê´Â ÀÌ»óÇÑ Çö»óÀÌ Æ¢¾î³ª¿É´Ï´Ù. 0.0¿¡¼ºÎÅÍ 0.1¾¿ ÁÂÇ¥¸¦ ´Ã·Á°¡¸ç »Ñ·Áº¸½Ã¸é ¹Ù·Î ¾Ë¼ö ÀÖ½À´Ï´Ù.)
ÅØ¼¿°ú Çȼ¿ÀÌ Á¤È®È÷ ÀÏÄ¡µÇ´Â ¹öÅØ½ºÁÂÇ¥´Â (Á¤¼öÇȼ¿ÁÂÇ¥ - 0.5) »ÓÀ̰í, À̶§´Â ¹«½¼ÁþÀ» ÇÏ´õ¶óµµ 2D¿¡¼ Çß´ø°Í°í ¶È°°Àº °á°ú¸¦ ¾òÀ»¼ö ÀÖ½À´Ï´Ù.
´Ü ÅØ½ºÃÄÁÂÇ¥´Â ¿ÀÇÁ¼ÂÀÌ °É¸®Áö ¾Ê¾Ò´Ù´Â ÀüÁ¦ÇÏ¿¡ ¸»ÀÌÁÒ.
Vertex.UV = Á¤¼öÅØ¼¿ÁÂÇ¥ / TextureSize
À̰ÍÀ¸·Î D3D·Î 2DÃâ·ÂÇÒ¶§ ½ºÅ©¸°ÁÂÇ¥¿¡¼ 0.5¸¦ »©ÁÖ ÀÌÀ¯¿Í Á߿伺¿¡ ´ëÇØ ¸»¾¸µå·È½À´Ï´Ù.
À̰ÍÀ¸·Î ¸ðµÎµé ±ò²ûÇÏ°í ¿ÏÀüÇÑ 2DÃâ·Â·çƾÀ» °®°ÔµÇ¾úÀ¸¸é ÁÁ°Ú³×¿ä. ±×·³ ¸ðµÎµé ÁñÇÁÇϼ¼¿ä.
°¨ÀÚ ¼º¼ö¿Ã¸²...@~
¢½´Þ¸µ ¾Ë¶ø¢½
|
|