Áö¿øµÇ´Â ¸ðµç Áö¿À¸ÞÆ®¸®¸¦ ÇÁ¶óÀ̸ÓƼºê¶ó°í ÇÕ´Ï´Ù.
DirectX°¡ Áö¿øÇÏ´Â 6°¡ÁöÀÇ ±âº»ÀûÀÎ ÇÁ¶óÀ̸ÓƼºê´Â Æ÷ÀÎÆ® ¸®½ºÆ®, ¶óÀÎ ¸®½ºÆ® , ¶óÀÎ ½ºÆ®¸³, 
Æ®¶óÀÌ¾Þ±Û ¸®½ºÆ®, Æ®¶óÀÌ¾Þ±Û ½ºÆ®¸³, Æ®¶óÀÌ¾Þ±Û ÆÒÀÌ ÀÖ½À´Ï´Ù.

À̹ø Àå¿¡¼­´Â 2°³ÀÇ »ï°¢ÇüÀ» »ç¿ëÇؼ­ »ç°¢ÇüÀ» Ãâ·ÂÇÕ´Ï´Ù.

¾ÕÀåÀÇ È­¸é ¼³Á¤À» À§ÇÑ ÄÚµå´Â Á¦¿ÜÇÏ°í Ãß°¡µÈ ºÎºÐ¸¸ ¼³¸í µå¸®°Ú½À´Ï´Ù.
Ãß°¡µÈ »çÇ×À» °£´ÜÇÏ°Ô Á¤¸®ÇÏ¸é ¾Æ·¡¿Í °°½À´Ï´Ù.

1) ¹öÅؽº Æ÷¸Ë ¼±¾ð 
¹öÅؽº ¹öÆÛ¸¦ ¸¸µé±âÀ§ÇØ, ¹öÅؽº Æ÷¸ËÀ» ´ÙÀÌ·ºÆ®X ½Ã½ºÅÛ¿¡ ¾Ë·ÁÁÖ¾î¾ß ÇÑ´Ù. 
¿ì¼± ¹öÅؽº Æ÷¸ËÀ» ¼±¾ðÇÏ°í, ¹öÅؽº Æ÷¸Ë¿¡ ¸Â´Â ±¸Á¶Ã¼ ¼±¾ð, ±×¸®±¸ ¹öÅؽº µ¥ÀÌŸ¸¦ ¸¸µé¸é µË´Ï´Ù.

#define D3DFVF_MYVERTEX (D3DFVF_XYZ)

typedef struct MYVERTEX
{
	float	x;
	float	y;
	float	z;
} MYVERTEX, *LPMYVERTEX;

MYVERTEX	g_vertex[4];

x, y, z¸¸ ÇÊ¿äÇϱ⠶§¹®¿¡ D3DFVF_XYZ¸¦ ¼±¾ðÇÕ´Ï´Ù. ±¸Á¶Ã¼ ¿ª½Ã ÀÌÇØ °¡½Ç °Ì´Ï´Ù.
¹öÅؽº ¹öÆÛ¿¡ ³Ñ°ÜÁÖ±âÀ§ÇÑ µ¥ÀÌŸ¸¦ ´ã±â À§ÇÑ ¹è¿­À» Á¤ÀÇ ÇÕ´Ï´Ù.


2) DXInit()ÇÔ¼ö¿¡ ÃʱâÈ­ Ãß°¡
g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
ÀÌ ÇÁ·Î±×·¥ÀÇ ¼³Á¤¿¡¼­ ÇÊ¿äÇÑ ¼¼ °¡ÁöÀÇ ·»´õ¸µ »óÅ´ z-¹öÆÛ, ¿¥ºñ¾ðÆ® Á¶¸í, Çϵå¿þ¾î Á¶¸í¿¡ 
´ëÇÑ °ÍÀÔ´Ï´Ù.


3) ¹öÅؽº Æ÷¸Ë ó¸®
void DXInitGeometry()
   a. ¹öÅؽº ¹öÆÛ »ý¼º
   b. ¹öÅؽº ¹öÆÛ ¶ô
   c. µ¥ÀÌÅ͸¦ ¹öÅؽº ¹öÆÛ·Î º¹»ç
   d. ¹öÅؽº ¹öÆÛ ¶ô ÇØÁ¦

a. ¹öÅؽº ¹öÆÛ »ý¼º
¹öÅؽº ¹öÆÛ¸¦ »ý¼ºÇϱâÀü¿¡ ¹öÅؽº Á¤º¸¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
±×¸²°ú Äڵ带 º¸¸é ½¬¿ï °Ì´Ï´Ù.

float fSizeX = 5.0f; float fSizeY = 5.0f; // Create the geometry g_vertex[0].x = -fSizeX/2; g_vertex[0].y = fSizeY/2; g_vertex[0].z = 0.0f; g_vertex[1].x = -fSizeX/2; g_vertex[1].y = -fSizeY/2; g_vertex[1].z = 0.0f; g_vertex[2].x = fSizeX/2; g_vertex[2].y = fSizeY/2; g_vertex[2].z = 0.0f; g_vertex[3].x = fSizeX/2; g_vertex[3].y = -fSizeY/2; g_vertex[3].z = 0.0f; ¹öÅؽº ¹öÆÛ¸¦ »ý¼ºÇϱâ À§Çؼ­´Â CreateVertexBuffer()ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. HRESULT CreateVertexBuffer( UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer8** ppVertexBuffer ); g_pd3dDevice->CreateVertexBuffer(4*sizeof(MYVERTEX), 0, D3DFVF_MYVERTEX, D3DPOOL_DEFAULT, &g_pVertexBuffer) ù¹ø° ÀÎÀÚ´Â ¹öÅؽº ¹öÆÛÀÇ ±æÀ̸¦ ³ªÅ¸³À´Ï´Ù. ÀÌÀå¿¡¼­´Â 4°³ÀÇ ¹öÅؽº°¡ ÇÊ¿äÇÕ´Ï´Ù. µÎ¹ø° ÀÎÀÚ´Â ¹öÆÛ¸¦ ¾î¶»°Ô »ç¿ëÇÒ°ÍÀÎÁö ÁöÁ¤ÇÕ´Ï´Ù. ¼¼¹ø° ÀÎÀÚ´Â »ç¿ëÇÒ ¹öÅؽº Æ÷¸ËÀ» ³Ö½À´Ï´Ù. ³×¹ø° ÀÎÀÚ´Â ¹öÆÛ°¡ Â÷ÁöÇÒ ¸Þ¸ð¸® Ç®À» ÁöÁ¤ÇÕ´Ï´Ù. ¿©±â¼­´Â µðÆúÆ® ¸Þ¸ð¸® Ç®À» »ç¿ë ÇϹǷΠD3DPOOL_DEFAULT¸¦ »ç¿ëÇÕ´Ï´Ù. ¸¶Áö¸· ÀÎÀÚ´Â ¹öÆÛ Æ÷ÀÎÅ͸¦ ³Ö½À´Ï´Ù. b. ¹öÅؽº ¹öÆÛ ¶ô HRESULT IDirect3DIndexBuffer8::Lock( UINT OffsetToLock, UINT SizeToLock, BYTE** ppbData, DWORD Flags ); g_pVertexBuffer->Lock(0, sizeof(g_vertex), (BYTE**)&lpVertices, 0) ¹öÆÛÀÇ µ¥ÀÌÅ͸¦ ¼öÁ¤Çϱâ À§Çؼ­´Â ¹öÆÛ¿¡ ¶ôÀ» °É°í µ¥ÀÌŸ ¹öÆÛÀÇ Æ÷ÀÎÅ͸¦ ¾ò¾î ¿É´Ï´Ù. ù¹ø° ÀÎÀÚ´Â ¶ôÀ» °É À妽º µ¥ÀÌÅÍÀÇ ¿É¼ÂÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î 0À» ÁöÁ¤ÇÕ´Ï´Ù. µÎ¹ø° ÀÎÀÚ´Â ¶ôÀ» °É ¹öÅؽº Æ÷¸ËÀÇ Å©±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¼¼¹ø° ÀÎÀÚ´Â ¶ôµÈ µ¥ÀÌÅÍÀÇ Æ÷ÀÌÅ͸¦ ¹Þ½À´Ï´Ù. ¸¶Áö¸· ÀÎÀÚ´Â ¿¬»ê¿¡ ÇÊ¿äÇÑ Ç÷¡±×¸¦ ÁöÁ¤ÇÕ´Ï´Ù. c. µ¥ÀÌÅ͸¦ ¹öÅؽº ¹öÆÛ·Î º¹»ç memcpy(lpVertices, g_vertex, sizeof(g_vertex)); ¹öÅؽº µ¥ÀÌÅ͸¦ ¶ôµÈ ¹öÆÛ·Î º¹»çÇÕ´Ï´Ù. d. ¹öÅؽº ¹öÆÛ ¶ô ÇØÁ¦ HRESULT IDirect3DIndexBuffer8::Unlock(); Lock()ÇÔ¼ö¸¦ »ç¿ëÇÑ ÈÄ¿¡´Â ¶ôÀ» Unlock()ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. 4)Áö¿À¸ÞÆ®¸® Ãâ·Â a. SetStreamSource() b. SetVertexShader() c. DrawPrimitive() a. SetStreamSource() Áö¿À¸ÞÆ®¸®¸¦ Ãâ·ÂÇϱâ À§ÇØ 3D½Ã½ºÅÛ¿¡°Ô ¾îµð¼­ ¹öÅؽº µ¥ÀÌÅ͸¦ °¡Á®¿Ã°ÍÀÎÁö ¾Ë·Á ÁÖ±âÀ§ÇØ SetStreamSource() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. HRESULT IDirect3DDevice8::SetStreamSource( UINT StreamNumber, IDirect3DVertexBuffer8* pStreamData, UINT Stride); g_pd3dDevice->SetStreamSource(0, g_pVertexBuffer, sizeof(MYVERTEX)); ù¹ø° ÀÎÀÚ´Â »ç¿ëÇÏ´Â ½ºÆ®¸²ÀÌ ¾î´À°ÍÀÎÁö ÁöÁ¤ÇÕ´Ï´Ù. µÎ¹ø° ÀÎÀÚ´Â ½ºÆ®¸² µ¥ÀÌÅÍÀÇ Æ÷ÀÎÅÍÀÔ´Ï´Ù. ¸¶Áö¸· ÀÎÀÚ´Â ¹öÅؽº Æ÷¸ËÀÇ Å©±âÀÔ´Ï´Ù. b. SetVertexShader() ½ºÆ®¸²À» ¼³Á¤ÇÏ°í ³­ÈÄ¿¡´Â ¾î´À ¹öÅؽº ½¦À̵带 »ç¿ëÇÒ°ÍÀÎÁö ¾Ë·ÁÁÝ´Ï´Ù. HRESULT IDirect3DDevice8::SetVertexShader(DWORD Handle); g_pd3dDevice->SetVertexShader(D3DFVF_MYVERTEX); c. DrawPrimitive() ¼Â¾÷ÇÑ Áö¿À¸ÞÆ®¸®¸¦ Ãâ·ÂÇϱâ À§ÇØ DrawPrimitive()ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. HRESULT IDirect3DDevice8::DrawPrimitive( D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount); g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); ù¹ø° ÀÎÀÚ´Â ÇÁ¶óÀ̸ÓƼºê ŸÀÔÀ» ÁöÁ¤ÇÕ´Ï´Ù. ŸÀÔÀº ¾Æ·¡¿Í °°½À´Ï´Ù. typedef enum _D3DPRIMITIVETYPE { D3DPT_POINTLIST = 1, D3DPT_LINELIST = 2, D3DPT_LINESTRIP = 3, D3DPT_TRIANGLELIST = 4, D3DPT_TRIANGLESTRIP = 5, D3DPT_TRIANGLEFAN = 6, D3DPT_FORCE_DWORD = 0x7fffffff } D3DPRIMITIVETYPE; µÎ¹ø° ÀÎÀÚ´Â ¹öÆÛ°¡ ½ÃÀÛÇÒ ¹öÆÛÀÇ À妽ºÀÔ´Ï´Ù. ¸¶Áö¸· ÀÌÀÚ´Â ·»µå¸µ ÇÒ ÇÁ¶óÀ̸ÓƼºê ¼ö¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ»óÀÔ´Ï´Ù.

    ¼Ò½ºº¸±â     DOWNLOAD     È¨À¸·Î     À妽º·Î