´ÙÀÌ·ºÆ® X 8¿¡¼­ 9·Î ¹Ù²Ù±â


´ÙÀÌ·ºÆ® 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¹®¼­°¡ ¾ø¾î¼­ ±×³É ³Ñ¾î°£´Ù.
 

[Æß]
~~~~~~~~~~~~~~~~~~~~~