´ÙÀÌ·ºÆ® 9.0À¸·Î ¿À¸é¼ 8.0°ú »ç¿ë¹ýÀÌ ´Ù¸£´Ù. ÁÖȲ»öÀ¸·Î
ÀÖ´Â°Ô 9.0C ¹öÀüÀÌ°í À§¿¡ ÀÖ´Â Äڵ尡 8.0 ¹öÀüÀÌ´Ù. directx8.0ÀÇ
tutorial06À» 9.0¹öÀüÀ¸·Î ¹Ù²Ù¾ú´Ù.
tutorial06°ú Ä«¸Þ¶ó ¼ÂÆà ÇÔ¼ö SetupCamera()¸¦ Ãß°¡Çß´Ù.
¼±Åà ´ëÈ »óÀÚ ¶°´Â ÇÁ·Î±×·¥ÀÌ fullÀÌ°í ¾È¶°´Â ÇÁ·Î±×·¥ÀÌ testÀÌ´Ù. shader9.0ÀÇ
tutorial01°ú Áߺ¹µÈ ¼³¸íÀÌ ¸¹À» °ÍÀÌ´Ù.
¼ÖÁ÷È÷ ¸»Çؼ Ä«ÇÇÇÑ°ÅÁö¸¸..... ±×·³ ½ÃÀÛÇغ¸ÀÚ.
1. Çì´õÆÄÀÏ°ú ¶óÀ̺귯¸® ±³Ã¼
#include <d3d8.h> #include <d3dx8.h> #pragma
comment (lib, "dxguid.lib") #pragma comment
(lib, "d3d8.lib") #pragma comment (lib,
"d3dx8.lib")
|
#include <time.h>
#include
<d3d9.h> #include <d3dx9.h>
#pragma
comment (lib, "dxguid.lib") #pragma comment
(lib, "d3d9.lib") #pragma comment (lib,
"d3dx9.lib") #pragma comment (lib, "winmm.lib")
|
Çì´õÆÄÀÏ°ú ¶óÀ̺귯¸®¸¦ 9·Î ±³Ã¼ÇÑ´Ù.
ÀÌÈÄ·Î timeGetTime()ÇÔ¼ö¸¦ »ç¿ëÇϱâ Çì´õÆÄÀÏ time.hÆÄÀÏ°ú ¶óÀ̺귯¸®
winmm.lib¸¦ Æ÷ÇÔ ½ÃÄ×´Ù.
2. ÀÎÅÍÆäÀ̽º ±³Ã¼
LPDIRECT3D8 g_d3d
= NULL; //
our main d3d8 interface LPDIRECT3DDEVICE8 g_d3d_Device
= NULL; // our d3d8 device LPDIRECT3DVERTEXBUFFER8
g_VertexBuffer = NULL;
// our VertexBuffer D3DPRESENT_PARAMETERS g_d3dpp;
|
LPDIRECT3D9 g_d3d
= NULL; //
our main d3d8 interface LPDIRECT3DDEVICE9 g_d3d_Device
= NULL; // our d3d8 device LPDIRECT3DVERTEXBUFFER9
g_VertexBuffer
= NULL; // our VertexBuffer D3DPRESENT_PARAMETERS g_d3dpp;
|
3. ´ÙÀÌ·ºÆ® X ÀÎÅÍÆäÀ̽º »ý¼º
LPDIRECT3D8 p_d3d =
Direct3DCreate8 (D3D_SDK_VERSION); int allVideoModes
= p_d3d->GetAdapterModeCount (D3DADAPTER_DEFAULT);
..................
p_d3d->EnumAdapterModes
(D3DADAPTER_DEFAULT, i, &g_pd3ddm[i]);
|
LPDIRECT3D9
p_d3d = Direct3DCreate9 (D3D_SDK_VERSION); int allVideoModes
= p_d3d->GetAdapterModeCount (D3DADAPTER_DEFAULT,
D3DFMT_X8R8G8B8);
...................
p_d3d->EnumAdapterModes
(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, i, &g_pd3ddm[i]);
|
ÀÎÅ×ÆäÀ̽º »ý¼ºÀÌ¾ß ±×³É 9·Î °íÃÄ ÁÖ¸é µÇ°í, GetAdapterModeCount()´Â
Á¶±Ý ¹Ù²î¾ú´Ù. µÎ ¹ø° ÆĶó¸ÞÅÍ¿¡ D3DFORMATÀ» ÁöÁ¤ÇØÁÖ´Â °ÍÀÌ Ãß°¡
µÇ¾ú´Ù. EnumAdapterModes() ¿ª½Ã µÎ ¹ø° ÆĶó¸ÞÅÍ D3DFORMATÀ»
ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
4. D3DPRESENT ±¸Á¶Ã¼ ±³Ã¼
g_d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_ONE;
|
//¹öÅؽº
ÇÁ·Î¼¼½Ì °áÁ¤ D3DCAPS9
caps; D3DDEVTYPE
deviceType = D3DDEVTYPE_HAL; g_d3d->GetDeviceCaps(D3DADAPTER_DEFAULT,
deviceType, &caps); int
vertexProcessing = 0; if(
caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) vertexProcessing
= D3DCREATE_HARDWARE_VERTEXPROCESSING; else vertexProcessing
= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
g_d3dpp.PresentationInterval
= D3DPRESENT_INTERVAL_ONE;
|
|
CreateDevice()¿¡ ¼ÒÇÁÆ®¿þ¾î ¹öÅؽº ÇÁ·Î¼¼½ÌÀ¸·Î ÇÒ °ÍÀÎÁö Çϵå¿þ¾î
¹öÅؽº ÇÁ·Î¼¼½ÌÀ¸·Î ó¸®ÇÒ°ÇÁö °áÁ¤ÇÏ´Â Äڵ带 Ãß°¡ ÇÏ¿´´Ù
5. CreateVertexBuffer º¯È
g_d3d_Device->CreateVertexBuffer(7*sizeof(CUSTOMVERTEX),
0,
D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer)
|
g_d3d_Device->CreateVertexBuffer(7*sizeof(CUSTOMVERTEX),
0,
D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer,
NULL)
|
¸¶Áö¸· ÀÎÀÚ pSharedhandleÀÌ Ãß°¡ µÇ¾ú´Âµ¥, ÀÌ¿ëµÇÁö ¾ÊÀ¸¸ç NULL·Î
ä¿î´Ù.
6. SetStreamSource, SetVertexShader º¯È
g_d3d_Device->SetVertexShader
(D3DFVF_CUSTOMVERTEX); g_d3d_Device->SetStreamSource
(0, g_VertexBuffer, sizeof(CUSTOMVERTEX));
|
g_d3d_Device->SetFVF (D3DFVF_CUSTOMVERTEX); g_d3d_Device->SetStreamSource
(0, g_VertexBuffer, 0, sizeof(CUSTOMVERTEX));
|
8¿¡¼ »ç¿ëÇÏ´ø
SetVertexShader()´Â 9¿¡¼´Â ¼ÎÀÌ´õ¸¦ ¼³Á¤ÇÒ ¶§¸¸ »ç¿ëµÈ´Ù. 9¿¡¼
°íÁ¤ÆÄÀÌÇÁ¶óÀÎÀÇ ¹öÅؽº ŸÀÔÀº ¾î¶»°Ô ¼ÂÆÃÇϳĸé SetFVF¸¦ »ç¿ëÇÑ´Ù.
SetStreamSource()µµ ¹Ù²î¾ú´Ù. 9.0¹öÀü¿¡ ¼¼ ¹ø° ÆĶó¸ÞÅÍ°¡ Ãß°¡
µÇ¾ú´Ù. ¹¹ÇÏ´ÂÁö´Â 9.0¹®¼°¡ ¾ø¾î¼ ±×³É ³Ñ¾î°£´Ù.
[Æß]
~~~~~~~~~~~~~~~~~~~~~
|