3D Programming Tips
 FrontPage|FindPage|TitleIndex|RecentChanges|UserPreferences E D R S P I M H RSS

Á¶°ÇºÎ ºê·¹ÀÌÅ© Æ÷ÀÎÆ®Ä¿³Î ¿ÀºêÁ§Æ®Ä¿³Î ÄÄÆÄÀÏŸÀÌ¸Ó °øºÎÇϱâ3D Character Animation Programming › 3D Programming Tips
Contents:
1 ½Ç¼ö ¿¬»ê¿¡¼­ ¿À·ù ¹ß»ý ½Ã۱â
2 float ÇüÀ» int ÇüÀ¸·Î ºü¸£°Ô º¯È¯Çϱâ
3 3D ·Î 2D ó¸®ÇÒ ¶§ ¿Ü°û¼± ó¸®
4 Direct3D ¿¡¼­ Vertex Buffer Class ¸¸µé±â
5 ±×·¹ÀÌ ½ºÄÉÀÏ·Î º¯È¯Çϱâ


1 ½Ç¼ö ¿¬»ê¿¡¼­ ¿À·ù ¹ß»ý ½Ã۱â #


Ȳ´çÇÑ ÁÖÁ¦Áö¸¸ ¿ÀÈ÷·Á ÀÌ·¯ÇÑ ¿À·ù¸¦ ¼û±èÀ¸·Î ÀÎÇØ ³ªÁß¿¡´Â °¨´çÇÒ ¼ö ¾ø´Â ¿À·ù°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ³ô¾ÆÁö°Ô µÈ´Ù. ±×·¡¼­ µð¹ö±ëÀ» ¿Ïº®È÷ ÇÒ ¼ö ÀÖµµ·Ï ÀϺη¯ ½Ç¼ö ¿¬»ê ¿À·ù°¡ ¹ß»ýÇϵµ·Ï ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸°Ú´Ù.

½Ç¼ö ¿¬»ê ¿À·ù¶ó°í ÇÑ´Ù¸é ´ëÇ¥ÀûÀ¸·Î '0 À¸·Î ³ª´°¼À Çϱâ' °¡ ÀÖ´Ù. ½Ç¼ö¿Í ´Þ¸® Á¤¼ö´Â '0 À¸·Î ³ª´°¼À Çϱâ' ¸¦ ÇÏ¸é ¿¡·¯¸¦ ¹ß»ýÇϸ鼭 ÇÁ·Î±×·¥ÀÌ Á¾·áÇÏÁö¸¸ ºÒÇàÈ÷ -_- ½Ç¼ö´Â ¾Æ¹« ÀÌ»ó¾øÀÌ ³Ñ¾î°£´Ù.

À̰ÍÀº CPU, ƯÈ÷ FPU (Floating Point Unit) °¡ À߸ø ¸¸µé¾îÁø °ÍÀÌ ¾Æ´Ï¶ó MS Windows ÀÇ ±³¸ðÇÑ ¼ÓÀÓ¼ö·Î ½Ç¼ö ¿¬»ê½Ã ¿À·ù¸¦ ¹«½ÃÇϵµ·Ï ¼³Á¤Çϰí ÀÖ´Ù. ¾Æ¸¶µµ ¼ö¸¹Àº Windows ÀÇ ¿¡·¯¸¦ °¨Ãß±â À§ÇÑ ¹æ¹ýÀÌ ¾Æ´Ò±î ÃßÃøÇØ º¼ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ½Ç¼ö ¿¬»ê ¿À·ù¸¦ ¹«½ÃÇϵµ·Ï °¡´ÉÇÑ °ÍÀº FPU ÀÇ ¼³Á¤À» º¯°æ °¡´ÉÇϱ⠶§¹®ÀÌ´Ù.

±×·³ ¾î¶»°Ô ½Ç¼ö ¿¬»ê ¿À·ù¸¦ ¹ß»ý °¡´ÉÇϵµ·Ï ÇÒ °ÍÀΰ¡?

_control87() ¿Í _controlfp() ÇÔ¼ö·Î FPU ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¿©·¯°¡Áö ¿É¼Ç°ú °ü·Ã ÇÔ¼öµµ ÀÖÁö¸¸ ´Ù ¼Ò°³ÇÒ ¼ö´Â ¾ø°í MSDN ( Âü°í> Vsual C++ Library Reference [http]_control87, _controlfp ) À» Âü°íÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù.

±âº»ÀûÀ¸·Î ¼³Á¤ÇØÁ¦ÇÒ °ªÀ¸·Î _EM_INVALID, _EM_ZERODIVIDE °¡ ÀÖ´Ù.

1  #include <float.h>  // _control87(), _controlfp() ¸¦ »ç¿ëÇϱâ À§ÇÑ Çì´õ ÆÄÀÏ
2  ...
3  _control87( ~ _EM_ZERODIVIDE, _MCW_EM );    // Divide by Zero ÇØÁ¦ (¿¡·¯ ¹ß»ý ¼³Á¤)
4  ...
5  _control87( _EM_ZERODIVIDE, _MCW_EM );      // Divide by Zero ¼³Á¤ (¿¡·¯ ¹«½Ã ¼³Á¤)
6  ...
7  _control87( ~ _CW_DEFAULT, 0xFFFFF );       // Windows ÀÇ ½Ç¼ö ¿¬»ê ¿¡·¯ ±âº»°ª ÇØÁ¦
8  ...
9  _control87( _CW_DEFAULT, 0xFFFFF );         // Windows ÀÇ ½Ç¼ö ¿¬»ê ¿¡·¯ ±âº»°ª ¼³Á¤

À§ÀÇ ÀÌ·¯ÇÑ ¼³Á¤Àº ÇÁ·Î±×·¥¿¡ Àü¹Ý¿¡ °ÉÃÄ »ç¿ëÇÏ¸é ¿¡·¯º¸´Ù ´õ ¸¹Àº ¹®Á¦°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î ÇÊ¿ä ºÎºÐ¿¡¼­ ÇØÁ¦ÇÏ°í ´Ù½Ã ¿ø»óÅ·Πº¹±¸ÇÏ´Â ¹æ¹ýÀÌ ´õ ÁÁÀ» °Í °°´Ù.


2 float ÇüÀ» int ÇüÀ¸·Î ºü¸£°Ô º¯È¯Çϱâ #


ÀϹÝÀûÀ¸·Î Çüº¯È¯(Type Casting) À» ÀÌ¿ëÇÏ¿© float ÇüÀ» int ÇüÀ¸·Î º¯È¯ÇÑ´Ù. ÇÏÁö¸¸ º¯È¯ °úÁ¤¿¡¼­ ³»ºÎÀûÀ¸·Î ¸¹Àº ½Ã°£À» ¼Ò¸ðÇÑ´Ù. ±×·¡¼­ Quake I ¿¡¼­ »ç¿ëÇÏ¿´´ø °£´ÜÇÑ Tip À» ¼Ò°³ÇÑ´Ù.

ÀÚ¼¼ÇÑ ³»¿ëÀº ±è¼º¿Ï ¼±»ý´ÔÀÇ [http]g-Matrix °­ÀǽÇÀÇ Intel FPU Rounding ¸ðµå Àо±â ¹Ù¶õ´Ù.

 1  inline int MY_ftol( float f )
 2  {
 3      int rvalue;
 4
 5      _asm {
 6          fld f
 7          fistp   rvalue
 8      }
 9
10      return rvalue;
11  }

Âü°í> <!> À§ ÇÔ¼ö´Â Release ¸ðµå¿¡¼­ ½ÇÇàÇØ¾ß Á¦´ë·Î µÈ °á°ú°¡ ³ª¿Â´Ù. Debug ¸ðµå¿¡¼­´Â ¿ÀÈ÷·Á ´õ ´À¸° °á°ú°¡ ³ª¿Ã ¼ö ÀÖÀ¸¹Ç·Î Âø°¢ÇÏÁö ¾Ê±â¸¦... ;)


3 3D ·Î 2D ó¸®ÇÒ ¶§ ¿Ü°û¼± ó¸® #


3D ¿¡¼­ Á÷±³ Åõ¿µÀ̳ª RHW ÁÂÇ¥¸¦ ÀÌ¿ëÇÏ¿© 2D 󸮽à ¿Ü°û¼± Çȼ¿ÀÌ È帴ÇÏ°Ô ³ª¿Â´Ù. º¸ÅëÀÇ °æ¿ì ÅØ½ºÃÄ ÇÊÅͳª ·»´õ¸µ ¿É¼ÇÀ» ¹Ù²ãµµ ÇØ°áÇÒ ¼ö°¡ ¾ø´Ù. ±×·¯³ª À̰ÍÀ» ÇØ°áÇÏ´Â ¹æ¹ýÀº ÀǿܷΠ°£´ÜÇÏ´Ù. Ãâ·ÂÇÒ·Á°í ÇÏ´Â Æú¸®°ïÀÇ °¡·Î, ¼¼·Î Å©±â¸¦ 2ÀÇ ½Â¼ö·Î ó¸®ÇÏ¸é Æ¯º°ÇÑ Ã³¸® ¾øÀÌ ¿Ü°û¼±ÀÌ ¶Ç·ÇÇÏ°Ô ³ª¿Â´Ù.


4 Direct3D ¿¡¼­ Vertex Buffer Class ¸¸µé±â #


5 ±×·¹ÀÌ ½ºÄÉÀÏ·Î º¯È¯Çϱâ #


±×·¹ÀÌ ½ºÄÉÀÏÀº 3D ¿Í´Â °Å¸®°¡ Á» ¸Õ ³»¿ëÀÌÁö¸¸ °£È¤ ÇÊ¿äÇÑ °æ¿ì°¡ À־ Á¤¸®ÇØ º»´Ù.

Grayscale = Red * 0.299 + Green * 0.587 + Blue * 0.114



SubCategoryGame

EditText|FindPage|DeletePage|LikePages| Valid XHTML 1.0! Valid CSS! powered by MoniWiki