XNA for C#
DirectX 9 for C#
DirectX 9 for C++
DirectX 9 for VB
Forum
   August 19: 2D - Chapter 3 posted
My Book: Out Now!
      
       Go to section on this site

Additional info


Latest Forum posts

 BSP Tree Tutorial
  Posted by: lbmurali
  When: 21/08/2008 at 13:41:47

 Loading compiled .xnb files
  Posted by: lbmurali
  When: 21/08/2008 at 13:33:00

 The city isn't very detailed and....
  Posted by: dom96
  When: 21/08/2008 at 12:52:47

 Height-map, low framerate
  Posted by: Rich_Zap
  When: 21/08/2008 at 11:45:00

 Vertex and Index
  Posted by: radulph
  When: 21/08/2008 at 08:33:06

 The city isn't very detailed and....
  Posted by: radulph
  When: 21/08/2008 at 08:26:03

 Vertex and Index
  Posted by: engine
  When: 21/08/2008 at 06:11:35

 What about Joypad Control
  Posted by: greyrat
  When: 20/08/2008 at 22:19:13

 The city isn't very detailed and....
  Posted by: radulph
  When: 20/08/2008 at 17:20:00

 I have a problem(with camera i think)
  Posted by: vToMy
  When: 20/08/2008 at 16:25:45


Ads

»öÀ» ÀÔÈ÷±â ±×¸®°í Z-buffer

À̹ø tutorial¿¡¼­´Â wireframeÀ¸·Î ±¸¼ºµÈ ÁöÇü¿¡ »öÀ» ÀÔÇôº¸°Ú½À´Ï´Ù. ±×¸®°í Á» ´õ º¸±â ÁÁ°Ô ÀÔÈ÷±â À§ÇØ ½ÇÁ¦ ÀÚ¿¬ÀÇ »ö°ú ºñ½ÁÇÏ°Ô »öÀ» ±¸¼ºÇغ¸°Ú½À´Ï´Ù. ½ÇÁ¦ ÁöÇüÀÇ ¿¹¸¦ º¸¸é, ¾Æ¸¶µµ ¾Æ·¡·Î Ç« ÆÄÀÎ Áö´ë´Â ÆÄ¶õ»ö È£¼ö°¡ ÀÖ°í Áö»ó À§ ³·Àº Áö´ë¿¡´Â Ǫ¸¥»ö Ç®°ú ³ª¹«µéÀÌ Á¸ÀçÇÏ¸ç »ê ÁßÅÎÀº °¥»ö ÈëÀ¸·Î, °¡Àå ³ôÀº »ê ²À´ë±â¿¡´Â ÇϾá»ö ´«ÀÌ Á¸ÀçÇÒ °Í ÀÔ´Ï´Ù. ¿ì¸®ÀÇ ÁöÇü¿¡µµ ÀÌ·¯ÇÑ »öÀ» ÀÔÈ÷±â À§ÇØ ³ôÀ̸¦ ±× °ª¿¡ µû¶ó 4´Ü°è·Î ³ª´©¾î ¾Æ·¡ºÎÅÍ ÆÄ¶õ»ö, ³ì»ö, °¥»ö, ÇϾá»öÀ» Â÷·Ê·Î ÇØ´ç ¿µ¿ªÀÇ vertex¿¡ Àû¿ëÇϰڽÀ´Ï´Ù.

»õ Windows Game ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇϰí ÇÊ¿äÇÑ ÆÄÀÏÀ» ÁغñÇսôÙ.

°¡Àå ¸ÕÀú ÇØ¾ß ÇÒ ÀÏÀº ÃÖ´ë ³ôÀÌ¿Í ÃÖ¼Ò ³ôÀ̸¦ Á¤ÀÇÇÏ´Â °Í ÀÔ´Ï´Ù. ¾óÇÍ »ý°¢Çϱ⿡ heightmapÀÇ ÃÖ´ë°ªÀÌ 255À̰í ÃÖ¼Ò°ªÀÌ 0À̱⠶§¹®¿¡ À̰ÍÀ» ±×´ë·Î ÃÖ´ë ³ôÀÌ, ÃÖ¼Ò ³ôÀ̶ó°í »ý°¢Çϱ⿡ ½¬¿îµ¥ »ç½Ç Ç×»ó ±×·± °ÍÀº ¾Æ´Õ´Ï´Ù. ¿ì¸®ÀÇ ÁöÇüÀÇ °æ¿ì ÃÖ´ë ³ôÀ̸¦ 255, ÃÖ¼Ò ³ôÀ̸¦ 0À¸·Î °¡Á¤Çϰí 4´Ü°è·Î ³ª´©¸é ÆÄ¶õ»ö ºÎºÐ°ú ÇϾá»ö ºÎºÐÀÇ ¿µ¿ªÀÌ ÁöÇü¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ¿ì¸®°¡ ¿øÇÏ´Â °á°ú°¡ ¾Æ´ÏÁö¿ä. µû¶ó¼­ ÇöÀç ±×·ÁÁö´Â ÁöÇüÀÇ ÃÖ´ë ³ôÀÌ¿Í ÃÖ¼Ò ³ôÀ̸¦ °¡Á®¿Í¼­ ±× »çÀ̸¦ 4´Ü°è·Î ³ª´©¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù.

ÃÖ´ë ³ôÀÌ¿Í ÃÖ¼Ò ³ôÀ̸¦ ÀúÀåÇÒ Àü¿ª º¯¼ö¸¦ ¼±¾ðÇÕ´Ï´Ù. ÀÏ´Ü ÃʱⰪÀº ÃÖ´ë ³ôÀÌ´Â 255, ÃÖ¼Ò ³ôÀÌ´Â 0À» ÁÖ°Ú½À´Ï´Ù.

 int minimumheight = 255;
 int maximumheight = 0;

LoadHeightDataÇÔ¼öÀÇ ³ôÀ̰ªÀ» ÀúÀåÇÏ´Â ºÎºÐ¿¡ ´ÙÀ½°ú °°ÀÌ ÃÖ´ë ³ôÀÌ¿Í ÃÖ¼Ò ³ôÀ̸¦ ±¸ÇÏ´Â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.

 heightdata[WIDTH - 1 - x, HEIGHT - 1 - y] = height;
 
 if (height < minimumheight)
     minimumheight = height;
 if (height > maximumheight)
     maximumheight = height;

ÀÌÁ¦ ÃÖ´ë ³ôÀÌ¿Í ÃÖ¼Ò ³ôÀÌ »çÀÌÀÇ ¿µ¿ªÀ» 4µîºÐÇØ¾ß ÇÕ´Ï´Ù.



±âÁ¸ÀÇ ÇϾá»öÀ¸·Î vertexÀÇ »ö»ó°ªÀ» ÁöÁ¤ÇÏ´Â Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇսôÙ.

 vertices[x + y * WIDTH].Position = new Vector3(x, y, heightdata[x,y]);
 
 if (heightdata[x, y] < minimumheight + (maximumheight - minimumheight) * 1 / 4)
     vertices[x + y * WIDTH].Color = Color.Blue;
 else if (heightdata[x, y] < minimumheight + (maximumheight - minimumheight) * 2 / 4)
     vertices[x + y * WIDTH].Color = Color.Green;
 else if (heightdata[x, y] < minimumheight + (maximumheight - minimumheight) * 3 / 4)
     vertices[x + y * WIDTH].Color = Color.Brown;
 else
     vertices[x + y * WIDTH].Color = Color.White;

ÇØ´ç ÄÚµå´Â ÃÖ¼Ò ³ôÀ̰ª°ú ÃÖ´ë ³ôÀ̰ª »çÀ̸¦ 4µîºÐÇÏ¿© °¢ ¿µ¿ªÀÇ vertexÀÇ »ö»ó°ªÀ» Blue, Green, Brown, White·Î ÁöÁ¤ÇÕ´Ï´Ù.

ÇöÀç´Â lineÀ¸·Î ÁöÇüÀÌ Ç¥ÇöµÇ¾î Àֱ⠶§¹®¿¡(wireframe), »öÀÌ ÀÔÇôÁø ÁöÇüÀ» Ç¥ÇöÇϱâ À§ÇØ ´ÙÀ½ÀÇ Äڵ带 »èÁ¦ÇϰڽÀ´Ï´Ù.

 device.RenderState.FillMode = FillMode.WireFrame;

À§ÀÇ Äڵ带 »èÁ¦Çϸé FillMode´Â ÀÚµ¿À¸·Î ±âº»°ªÀÎ Solid·Î ¼³Á¤µË´Ï´Ù. ȤÀº FillMode.Solid¿Í °°ÀÌ Á÷Á¢ ¼³Á¤ÇØÁ־ »ó°ü¾ø½À´Ï´Ù.

F5(µð¹ö±×)۸¦ ´­·¯ ½ÇÇà ½ÃŲ ÈÄ ÁöÇüÀ» ¸î ¹ø ȸÀü½ÃÄÑ º¾½Ã´Ù. PCÀÇ ±×·¡ÇÈ Ä«µå¿¡ µû¶ó °á°ú°¡ ´Ù¸£°Ô ³ªÅ¸³¯ ¼ö ÀÖÁö¸¸ ¾Æ¸¶µµ ÁöÇüÀÌ Á¦´ë·Î ³ªÅ¸³ªÁö ¾Ê°Å³ª ÁöÇü»ó ºÀ¿ì¸®¿¡ ÇØ´çÇÏ´Â ¿µ¿ªÀÌ °¡·ÁÁ® º¸ÀÌÁö ¾Ê¾Æ¾ß Çϴ ȣ¼ö µîÀÇ ¿µ¿ª µÚ¿¡ °ãÃÄ ±×·ÁÁ® ¸Å¿ì ÀÌ»óÇÏ°Ô º¸ÀÏ °Í ÀÔ´Ï´Ù. ÀÌ´Â ¾ÆÁ÷ Z-buffer°¡ ¼³Á¤µÇÁö ¾Ê¾Ò±â ¶§¹®ÀÔ´Ï´Ù. Z-buffer´Â ´Ü¼øÇÏ°Ô ¿©·¯ºÐÀÇ ±×·¡ÇÈ Ä«µå°¡ ¾î´À vertexµé¸¦ ¾î´À vertexµé À§¿¡ ±×·Á¾ß ÇÏ´ÂÁö ¼ø¼­¸¦ ÀúÀåÇϰí ÀÖ´Â ±íÀÌÀÇ ÁÂÇ¥°ª ¹è¿­ÀÏ »ÓÀÔ´Ï´Ù. ¿¹¸¦ µé¾î Áö±Ý ¿ì¸®ÀÇ ÁöÇüÀ» ±×·¡ÇÈ Ä«µå°¡ ±×¸± ¶§ ¿ì¸®´Â °£´ÜÈ÷ ¿ì¸®ÀÇ ½Ã¼±(Ä«¸Þ¶ó)À» ±âÁØÀ¸·Î ¾Õ¿¡ ÀÖ´Â »ï°¢Çü(ºÀ¿ì¸® ¿µ¿ª)ÀÌ µÚ¿¡ ÀÖ´Â »ï°¢Çü(È£¼ö ¿µ¿ª)À» °¡¸®°í ÀÖÀ½À» ÆÇ´ÜÇÒ ¼ö ÀÖÁö¸¸, ±×·¡ÇÈ Ä«µå´Â ±×·¸Áö ¸øÇÕ´Ï´Ù. ±×·¡ÇÈ Ä«µåÀÇ ÀÔÀå¿¡¼­´Â Z-buffer°¡ ¾ø´Ù¸é µÎ »ï°¢ÇüÀÇ ¿ì¼± ¼øÀ§¸¦ ÆÇ´ÜÇÏÁö ¸øÇÏ°í µ¿½Ã¿¡ °°Àº À§Ä¡¿¡ µÎ »ï°¢ÇüÀ» °ãÃÄ ±×¸®°Ô µÇ¹Ç·Î °á°úÀûÀ¸·Î Áö±Ý°ú °°ÀÌ ¸Å¿ì ÀÌ»óÇÑ È­¸éÀÌ Ãâ·ÂµË´Ï´Ù.

ÇÏÁö¸¸ ´ÙÇàÈ÷µµ ¿ì¸®ÀÇ ÁöÇü¿¡ Z-buffer¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ±×Àú DrawÇÔ¼öÀÇ device.Clear ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¿© Z-buffer¸¦ ¼³Á¤ÇØ Áֱ⸸ ÇÏ¸é µË´Ï´Ù. ³ª¸ÓÁö ÀÏÀº ¸ðµÎ ¿©·¯ºÐÀÇ ±×·¡ÇÈ Ä«µåÀÇ ¸òÀÌÁö¿ä.

 device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1.0f, 0);

ÀÌÁ¦ F5(µð¹ö±×)۸¦ ´­·¯º¾½Ã´Ù.






Google
 
Webwww.riemers.net


If you appreciate the amount of time I spend creating and updating
these pages, feel free to donate -- any amount is welcome !



- Website design & XNA + DirectX code : Riemer Grootjans -
©2003 - 2008 Riemer Grootjans
Translations

This site in English
This site in Korean
This site in Czech

Microsoft MVP Award



2007 - 2008 MVP Award
DirectX - XNA

Contents

[Tutorials]
[XNA in C#]
Series 1: ÁöÇü
XNAÀÇ ½ÃÀÛ
ÀÌÆåÆ® ÆÄÀÏ
ù ¹øÂ° »ï°¢Çü
¿ùµå ÁÂÇ¥°è
ȸÀü, À§Ä¡ º¯È¯
À妽º
ÁöÇü »ý¼ºÀÇ ±âº»
ÆÄÀϷκÎÅÍ ÁöÇü »ý¼º
Űº¸µå ÀÔ·Â
[tut10]
[tut11]
[tut12]
[tut13]
-- Expand all --


Thank you!

Support this site --
any amount is welcome !

Stay up-to-date

I don't have the time to keep a News section, so stay informed about the updates by clicking on this RSS file!