À̹ø 7Àå¿¡¼­´Â ÅؽºÃÄ¿¡´Ù°¡ ³ë¸ÖÀ» Ãß°¡ÇÏ°Ú½À´Ï´Ù.

#define D3DFVF_MYVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1)
¾Ë·ÁÁÖ±â À§ÇÑ µ¥ÀÌÅÍ Æ÷¸Ë¿¡ D3DFVF_NORMALÀ» Ãß°¡ÇÕ´Ï´Ù.

typedef struct MYVERTEX
{
	D3DXVECTOR3 pos;
	D3DXVECTOR3 normal;
	D3DCOLOR    color; 
	float       u;
	float       v;
} MYVERTEX, *LPMYVERTEX;

±×¸®°í ±¸Á¶Ã¼¿¡´Â normalÀ» Ãß°¡ÇÕ´Ï´Ù.
³ë¸»Àº Ç¥¸é¿¡ ¼öÁ÷ÀÎ ¹æÇâÀ» °¡¸®Åµ´Ï´Ù. ¸ðµ¨À» º¼·Á¸é ³ë¸Ö °ªÀº º¸Åë Ä«¸Þ¶ó¿Í ¹Ý´ëÀÔ´Ï´Ù.

void DXInitGeometry()ÇÔ¼ö¿¡¼­ ³ë¸Ö µ¥ÀÌÅ͸¦ Ãß°¡ ÇÕ´Ï´Ù.
	g_vertex[0].normal.x = -fSizeX/2;
	g_vertex[0].normal.y = -fSizeY/2;
	g_vertex[0].normal.z = -1.0f;

	g_vertex[1].normal.x = -fSizeX/2;
	g_vertex[1].normal.y = fSizeY/2;
	g_vertex[1].normal.z = -1.0f;

	g_vertex[2].normal.x = fSizeX/2;
	g_vertex[2].normal.y = -fSizeY/2;
	g_vertex[2].normal.z = -1.0f;

	g_vertex[3].normal.x = fSizeX/2;
	g_vertex[3].normal.y = fSizeY/2;
	g_vertex[3].normal.z = -1.0f;


¾Æ·¡ ó·³ Ä«¸Þ¶ó À§Ä¡´Â z °ªÀÌ -10ÀÔ´Ï´Ù...  ±×¸®°í Æò¸é »ç°¢ÇüÀº z°ªÀÌ 0.0ÀÔ´Ï´Ù 
	cameraPos.x = 0.0f;
	cameraPos.y = 0.0f;
	cameraPos.z = -10.0f;
Æò¸é »ç°¢ÇüÀ» º¸±â À§Çؼ­ »ç°¢ÇüÀÌ ¹Ý»çÇÒ ¹æÇâ Áï ³ë¸Ö°ªÀº z = -1.0fÀÔ´Ï´Ù.


..........................Çϵå¿þ¾î Á¶¸í »ý¼º....................
void DXLight()
¿ì¸®´Â ¿©±â¼­ ¸ÓƼ¸®¾ó°ú Á¶¸íÀ» »ý¼ºÇÕ´Ï´Ù.

¿ì¼± ¸ÓƼ¸®¾ó¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸°Ú½À´Ï´Ù.
typedef struct _D3DMATERIAL8 {
    D3DCOLORVALUE   Diffuse;
    D3DCOLORVALUE   Ambient;
    D3DCOLORVALUE   Specular;
    D3DCOLORVALUE   Emissive;
    float           Power;
} D3DMATERIAL8;

¸ÓƼ¸®¾óÀÇ Diffuse °ªÀº Á¶¸íÀ» ¾î¶»°Ô ¹Ý»çÇÒÁö¸¦ ³ªÅ¸ ³À´Ï´Ù.
   Diffuse red = 1.0, greeen = 1.0, blue = 1.0À϶§ ÀÏ¹Ý ÀûÀ¸·Î Èò»öÀÇ Á¶¸íÀ» ¹Ý»ç ÇÕ´Ï´Ù.
   Diffuse red = 1.0, greeen = 0.0, blue = 0.0À϶§ ÀÏ¹Ý ÀûÀ¸·Î »¡°£»ö°ú Èò»öÀÇ Á¶¸íÀ» ¹Ý»ç ÇÕ´Ï´Ù 
   Diffuse red = 1.0, greeen = 0.0, blue = 0.0À϶§ ³ì»ö Á¶¸íÀ» ¼³Ä¡ÇÏ°Ô µÇ¸é,
                  »¡°£»öÀÇ ¸ÓÅ͸®¾óÀº °ËÀº»öÀ¸·Î ³ªÅ¸³ª°Ô µË´Ï´Ù.
				  
¸ÓƼ¸®¾óÀÇ Ambient °ªÀº Ambient Á¶¸í¿¡¸¸ ¿µÇâÀ» ¹Þ´Â´Ù´Â°ÍÀ» Á¦¿ÜÇÏ°í´Â ¸ÓƼ¸®¾óÀÇ Diffuse¿Í µ¿ÀÏÇÕ´Ï´Ù.				   
´ëºÎºÐÀÇ °ÔÀÓµéÀÌ ¾ÆÁÖ ¾îµÎ¿î ¿¥ºñ¾ðÆ® °ªÀ» »ç¿ëÇϱ⠶§¹®¿¡ Å« ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.


¸ÓƼ¸®¾óÀÇ Specular °ªÀº ¸ÓƼ¸®¾óÀÌ ÇÏÀ̶óÀÌÆ® µÈ ºÎºÐÀ» ¾î¶»°Ô ó¸®Çϴ°¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
ÀÌ °ªÀ» °­ÇÏ°Ô Çϸé Çöó½ºÆ½ ¶Ç´Â À¯¸®¿Í °°Àº È¿°ú¸¦ ÁÙ¼ö°¡ ÀÖ½À´Ï´Ù.

¸ÓƼ¸®¾óÀÇ Emissive °ªÀº ¸ÓƼ¸®¾óÀÌ ¸¶Ä¡ ºûÀ» ¹ß»êÇÏ´Â °Íó·³ º¸À̱â À§ÇØ ÀÌ°ªÀ» »ç¿ë ÇÕ´Ï´Ù.

HRESULT SetMaterial(CONST D3DMATERIAL8* pMaterial);
 
g_pd3dDevice->SetMaterial(&mtrl)ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© È°¼ºÈ­ ½Ãŵ´Ï´Ù.


ÀÌÁ¦ Çϵå¿þ¾î Á¶¸íÀ» »ý¼ºÇÏ°Ú½À´Ï´Ù.
typedef struct _D3DLIGHT8 {
    D3DLIGHTTYPE    Type;
    D3DCOLORVALUE   Diffuse;
    D3DCOLORVALUE   Specular;
    D3DCOLORVALUE   Ambient;
    D3DVECTOR       Position;
    D3DVECTOR       Direction;
    float           Range;
    float           Falloff;
    float           Attenuation0;
    float           Attenuation1;
    float           Attenuation2;
    float           Theta;
    float           Phi;
} D3DLIGHT8;

ù¹ø° ÀÎÀÚ´Â Á¶¸íÀÇ Å¸ÀÔÀ¸·Î ¾Æ·¡¿Í °°´Ù.
	typedef enum _D3DLIGHTTYPE {
		D3DLIGHT_POINT          = 1,
		D3DLIGHT_SPOT           = 2,
		D3DLIGHT_DIRECTIONAL    = 3,

		D3DLIGHT_FORCE_DWORD    = 0x7fffffff
	} D3DLIGHTTYPE;

D3DLIGHT_POINT ƯÁ¤ À§Ä¡¿¡¼­ ¸ðµç ¹æÇâÀ¸·Î ¹æÃâµÇ´Â Á¶¸í.
D3DLIGHT_SPOT  ƯÁ¤ À§Ä¡¿¡¼­ ƯÁ¤ ¹æÇâÀ¸·Î ¹æÃâµÇ´Â Á¶¸í.
D3DLIGHT_DIRECTIONAL ÇѹæÇâÀ¸·Î ¹æÃâµÇ´Â Àüü Á¶¸í.
D3DLIGHT_FORCE_DWORD »ç¿ëµÇÁö ¾Ê´Â ÀÎÀÚ.

Diffuse, Specular, Ambient ¼¼°³ÀÇ ÀÎÀÚ´Â ¸ÓƼ¸®¾ó °°ÀÌ Á¶¸í¿¡µµ ¶È°°ÀÌ Àû¿ëµË´Ï´Ù.
Position   Á¶¸íÀÇ À§Ä¡
Direction  Á¶¸íÀÇ º¤Ã³ ¹æÇâÀ¸·Î D3DLIGHT_SPOT°ú D3DLIGHT_DIRECTIONAL¿¡ ´ëÇؼ­¸¸ Àû¿ëµË´Ï´Ù.
Range      Á¶¸íÀÌ ³ª°¥¼ö ÀÖ´Â ÃÖ´ë°Å¸®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. 
           D3DLIGHT_DIRECTIONAL ŸÀÔ¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.
Falloff    D3DLIGHT_SPOTf¸¦ »ç¿ëÇÒ¶§ Á¶¸íÀÌ °¨¼ÒÇÏ´Â ºñÀ²À» ³ªÅ¸³À´Ï´Ù.
           ´ëºÎºÐÀÇ °æ¿ì 1.0À¸·Î ÁöÁ¤ÇÕ´Ï´Ù.
Attenuation0, Attenuation1, Attenuation2 ´ÙÀ½ÀÇ ¼¼ÀÎÀÚ´Â Á¶¸í°ú Ÿ°ÙÀÇ °Å¸®¿¡ µû¸¥ Á¶¸í °­µµ 
           °¨¼ÒÀ²À» ÁöÁ¤ÇÕ´Ï´Ù. °¢°¢ÀÇ Á¶¸íÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
Theta      D3DLIGHT_SPOTÀÇ ¿ø»ÔÀÇ °¢À» ¶óµð¾ÈÀ¸·Î Ç¥½ÃÇÕ´Ï´Ù.
           ÀÌ°ªÀº 0ºÎÅÍ Phi±îÁöÀÔ´Ï´Ù.
Phi        ¿ÜºÎÀÇ ¿ø»Ô °¢À¸·Î 0ºÎÅÍ 180µµ ±îÁöÀÔ´Ï´Ù. ´ÜÀ§´Â ¹°·Ð ¶óµð¾ÈÀÔ´Ï´Ù.

Á¶¸í ¼³Á¤ÀÌ ³¡³ª¸é ¾Æ·¡¿Í °°ÀÌ Á¶¸íÀ» È°¼ºÈ­ ½Ãŵ´Ï´Ù.

	// Set the active light
    g_pd3dDevice->SetLight( 0, &d3dLight );
	// Enable the light
    g_pd3dDevice->LightEnable( 0, TRUE );
	// Tell D3D to utilize lights
    g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );

HRESULT SetLight( DWORD Index, CONST D3DLIGHT8* pLight);
ƯÁ¤ÇÑ Á¶¸íÀÇ ¼Ó¼ºÀ» ÁöÁ¤ÇÕ´Ï´Ù.

HRESULT LightEnable( DWORD LightIndex, BOOL bEnable);
ÁöÁ¤ÇÑ Á¶¸íÀ» 3D ½Ã½ºÅÛÀÌ È°¼ºÈ­ ½Ãŵ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ¸¸é ¾Æ¹«·± Á¶¸í¿¬»êµµ ÀÌ·ï ÁöÁö ¾Ê½À´Ï´Ù.

g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
3D ½Ã½ºÅÛÀÌ Á¶¸í ¿¬»êÀ» ¼öÇàÇϵµ·Ï ÇÕ´Ï´Ù . ÀÌÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ¸¸é Á¶¸í ¿¬»êÀÌ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.

ÀÌ»óÀÔ´Ï´Ù....

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