À̹ø 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
    È¨À¸·Î
    À妽º·Î
|