|
|
|
|
|
|
Additional info
|
|
|
|
|
Latest Forum posts
|
|
|
|
|
Ads
|
|
|
|
|
|
|
|
|
|
|
|

DirectX9°ú XNAÀÇ Â÷ÀÌÁ¡¿¡´Â ¹«¾ùÀÌ ÀÖÀ»±î¿ä?
»ó´çÈ÷ ¸¹Áö¸¸, ±× Â÷ÀÌÁ¡ Áß Çϳª´Â ¹Ù·Î XNA´Â ¹«¾ùÀÌµç ±×¸®±â(Draw) À§Çؼ´Â ¹Ýµå½Ã Effect°¡ ÇÊ¿äÇÏ´Ù´Â °Í ÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, ¿ì¸®´Â ȸ鿡 »ï°¢ÇüÀ» ¶ç¿ì±âµµ ÇÏ°í ¶Ç ¸Þ¸ð¸®°¡ ÃæºÐÇÏ´Ù¸é À°¸éü, ȤÀº ±¸Ã¼ ±îÁöµµ ±×¸± ¼ö ÀÖ½À´Ï´Ù.
Effect´Â ÀÌ·¯ÇÑ °ÍµéÀ» - »ï°¢ÇüµéÀ» - ¿ì¸®ÀÇ ±×·¡ÇÈ Ä«µå°¡ ¾î¶»°Ô Ãâ·ÂÇÒ °ÍÀÎÁö Áö½ÃÇÏ´Â ¸í·ÉµéÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, technique A, B °¡ ÀÖ´Ù°í Ĩ½Ã´Ù.
±×·¸´Ù¸é ¿ì¸®´Â technique A¸¦ »ç¿ëÇÏ¿© ¹ÝÅõ¸íÇÑ »ï°¢ÇüÀ» ±×¸®°í ¶Ç technique B¸¦ »ç¿ëÇÏ¿© ¿ìÁßÃæÇÑ ÆÄ¶õ»öÀÇ °øÆ÷ ¿µÈ ºÐÀ§±âÀÇ »ï°¢ÇüÀ» ±×¸± ¼öµµ Àְڳ׿ä.
¹¹, ±×·¸´Ù°í ÇØ¼ ¾ÆÁ÷ Effect¸¦ ¾î¶»°Ô »ç¿ëÇÒÁö °í¹ÎÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¾îÂ÷ÇÇ series 3¿¡¼ ÀÚ¼¼ÇÏ°Ô ´Ù·ê ¿¹Á¤À̴ϱî¿ä. ´Ù¸¸, À§¿¡¼ ¸»Çßµí XNA´Â Effect ¾øÀÌ´Â ¾Æ¹«°Íµµ ±×¸± ¼ö ¾øÀ¸¹Ç·Î ¿©±â¼´Â reimer¾¾°¡ ¹Ì¸® ¸¸µé¾î ³õÀº Effect ÆÄÀÏÀ» »ç¿ëÇϵµ·Ï ÇսôÙ.
ÀÌ effects.fx ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÑ ÈÄ »õ·Î¿î Windows Game ÇÁ·ÎÁ§Æ®¸¦ ¸¸µì´Ï´Ù. ±×¸®°í effects.fx ÆÄÀÏÀ» »õ·Î ¸¸µç ÇÁ·ÎÁ§Æ®ÀÇ Æú´õ¿¡ º¹»ç ÇÕ´Ï´Ù.
tutorial 01ÀÇ Äڵ忡 Effect ¼³Á¤ ºÎºÐ¸¸ Ãß°¡ÇÒ °Í À̹ǷΠtutorial 01ÀÇ Game1.cs ÆÄÀÏÀ» ±×´ë·Î °¡Á®¿Íµµ »ó°ü ¾ø°Ú³×¿ä. ´Ü, Namespace´Â ¼öÁ¤ÇØ Áà¾ß °ÚÁö¸¸¿ä.
Áغñ°¡ ´Ù µÇ¾ú´Ù¸é ÄÚµå·Î µé¾î°¡ º¾½Ã´Ù.
¸ÕÀú Effect¸¦ ¼³Á¤Çϱâ À§ÇØ Àü¿ª º¯¼ö¸¦ Çϳª ¸¸µì´Ï´Ù.
Effect effect;
±×¸®°í tutorial 01¿¡¼ ¸¸µé¾ú´ø ÇÔ¼ö SetupXNADeviceÇÔ¼öÀÇ ³¡¿¡ ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
CompiledEffect compiledEffect = Effect.CompileEffectFromFile("@/../../../../effects.fx", null, null, CompilerOptions.None, TargetPlatform.Windows); effect = new Effect(graphics.GraphicsDevice, compiledEffect.GetEffectCode(), CompilerOptions.None, null);
HLSL·Î ÀÛ¼ºµÈ Effect ÆÄÀÏÀÇ ³»¿ëÀ» Àоî ÄÄÆÄÀÏÇÏ°í ±× °á°ú¸¦ effect Àü¿ª º¯¼ö¿¡ ¼³Á¤ÇÏ´Â ÄÚµåÀÔ´Ï´Ù. effects.fx ÆÄÀÏÀÌ ½ÇÇà ÆÄÀÏÀÇ À§Ä¡¿Í ´Ù¸¥ Æú´õÀÎ ÇÁ·ÎÁ§Æ® Æú´õ¿¡ Á¸ÀçÇϹǷΠÀ§¿Í °°Àº »ó´ë °æ·Î¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. ³ª¸ÓÁö parameterµéÀº ¿©±â¼ °í¹ÎÇÏÁö ¸¶¼¼¿ä. ¸ðµÎ series 3¿¡¼ ¼³¸íÇÕ´Ï´Ù.
ÀÌÁ¦ ÇÊ¿äÇÑ °ÍÀº ¸ðµÎ °®Ãß¾úÀ¸´Ï, DrawÇÔ¼ö¸¦ »ìÆìº¾½Ã´Ù.
¿ì¼± ù¹øÂ° ¶óÀÎÀ» ´ÙÀ½°ú °°ÀÌ Á» ´õ ¾îµÎ¿î ÆÄ¶õ»öÀÌ Ãâ·ÂµÇµµ·Ï ¼öÁ¤ÇÕ´Ï´Ù. tutorial 01°ú µ¿ÀÏÇÑ °á°ú¹°ÀÌ ³ª¿À¸é Àç¹Ì ¾øÀ¸´Ï±î¿ä. :)
device.Clear(Color.DarkSlateBlue);
ClearÇÔ¼ö ¹ØÀ¸·Î Effect¸¦ À§ÇÑ Äڵ带 Á» ´õ Ãß°¡ÇØ º¸°Ú½À´Ï´Ù.
ù°·Î ¹«¾ð°¡¸¦ ±×¸®±â À§Çؼ´Â Effect °³Ã¼·ÎºÎÅÍ ¾î¶² Technique¸¦ ¾ò¾î¿Í¾ß ÇÕ´Ï´Ù.
effect.CurrentTechnique = effect.Techniques["Pretransformed"];
¿©±â¼ Pretransformed¶ó´Â Technique°¡ ³ª¿Ô´Âµ¥ Pretransformed Technique¿¡ ´ëÇØ¼´Â ´ÙÀ½ tutorial¿¡¼ »ìÆìº¸±â·Î ÇսôÙ.
ÇϳªÀÇ Technique´Â ¿©·¯°³ÀÇ Pass¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¿ì¸®´Â ±×°ÍµéÀÌ ÇÊ¿äÇÏÁö¿ä. Technique ¾Æ·¡·Î ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
effect.Begin(); foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Begin(); // sceneÀº ¹Ýµå½Ã ÀÌ »çÀÌ¿¡ ¿Í¾ß ÇÕ´Ï´Ù. pass.End(); } effect.End();
Ãß°¡µÈ Äڵ带 º¸¸é sceneÀº ¹Ýµå½Ã Pass.Begin()°ú Pass.End() »çÀÌ¿¡ Á¸ÀçÇØ¾ß ÇÔÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í Pass ¶ÇÇÑ Effect.Begin() ÀÌÈÄ¿¡ Á¸ÀçÇØ¾ß ÇÏ¸ç ¾Æ¹«°Íµµ ±×¸±°ÍÀÌ ¾ø°Ô µÇ¸é Effect.End()·Î ±×¸®±â¸¦ ¸¶ÃÄ¾ß ÇÕ´Ï´Ù.
Áï, sceneÀº PassÀÇ Begin°ú End »çÀÌ¿¡ ±×¸®°í Pass´Â EffectÀÇ Begin°ú End»çÀÌ¿¡ À§Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
ÀÌÁ¦ µð¹ö±×(F5)۸¦ ´©¸£¸é tutorial 01°ú º° Â÷ÀÌ´Â ¾øÁö¸¸ Effect°¡ Àû¿ëµÈ Á» ´õ ¾îµÎ¿î ÆÄ¶õ»ö ¹ÙÅÁÀÇ À©µµ¿ì°¡ º¸ÀÏ °Í ÀÔ´Ï´Ù.
- Website design & XNA + DirectX code : Riemer Grootjans - ©2003 - 2008 Riemer Grootjans
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007 - 2008 MVP Award DirectX - XNA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Support this site -- any amount is welcome !
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|