Creating a Device ¶
μ΄λ² μ±ν°μμ ν μΌμ
- IDirect3dDevice8 κ°μ²΄λ₯Ό λ§λλ λ°©λ²
- Viewportλ₯Ό μμ±νκ³ μ¬μ©νλ λ°©λ²
- Viewportλ₯Ό ν΄λ¦¬μ΄νλ λ°©λ²
- νλ©΄μ Presentνλ λ°©λ²
- λ€λ₯Έ(μλͺ»λ) Present νλΌλ©ν°λ€μ 리μ
νλ λ°©λ²
IDirect3DDevice κ°μ²΄λ₯Ό μμ± ¶
μ΄ κ°μ²΄λ IDirect3D κ°μ²΄μλ λ¬λ¦¬ μ€μ§μ μΌ μΌμ νλ κ°μ²΄μ΄λ€. μ΄ κ°μ²΄λ₯Ό μμ±νλ ν¨μλ λ€μκ³Ό κ°λ€. IDirect3D κ°μ²΄λ μ΄κ²μ μμ±νκΈ° μν΄ μ‘΄μ¬νλ€κ³ ν΄λ κ³ΌμΈμ΄ μλλ€.
κ²°κ³Όλ μμ μ±κ³΅νλ©΄ D3D_OKλ₯Ό 리ν΄νλ€.
BehaviorFlagμλ λ²ν
μ€λ₯Ό μ²λ¦¬νλ λ°©λ²μ λ£μ΄μ€λ€. D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, D3DCREATE_SOFTWARE_VERTEXPROCESSINGμ€ νκ°μ§λ₯Ό μ¬μ©νλ€. (μ¬μ€μ λ λ§μ μ΅μ
μ΄ μλ€.) λκ° λ§μ§λ§ SOFTWAREλ₯Ό μ¬μ©νλ€.
pPresentationParametersλ D3DPRESENT_PARAMERTERSμ ν¬μΈν°νμ΄λ€. μ κ²μ Deviceμ ννλ₯Ό κ²°μ νλ ꡬ쑰체μ΄λ€.
λ§μ§λ§ μΈμλ‘λ μμ±λ λλ°μ΄μ€μ κ°μ²΄λ₯Ό λ£μ΄μ€λ€.
λ€ μ¬μ©ν μ΄νλ κΌ!! Release()ν¨μλ₯Ό μ¬μ©νμ¬ μ¬μ©μ ν΄μ μν¨λ€.
== Viewportμ μΈν =
λ·°ν¬νΈλ μ€μ μ μΌλ‘ λ λλ§μ νλ μ§μμ΄λ€. λ·°ν¬νΈκ° μμ΄λ λλ°μ΄μ€λ μ΄λμ λ λλ§μ ν μ§ λͺ¨λ₯Έλ€.
κ²°κ³Όλ μ±κ³΅νλ©΄ D3D_OKλ₯Ό 리ν΄νλ€.
D3DVIEWPORT8 κ°μ²΄λ λ©€λ²λ λ€μκ³Ό κ°λ€.
~cpp HRESULT IDirect3D8::CreateDevice( UINT Adapter, // μ΄λν°μ λ²νΈ, D3DADAPTER_DEFAULTλ₯Ό μ¬μ© D3DDEVTYPE DeviceType, //λλ°μ΄μ€μ νμ, D3DDEVTYPE_HALμ μ¬μ© HWND hFocusWindow, // νμ¬ μ°½μ HWNDλ₯Ό λ£μ΄μ€λ€. DWORD BehaviorFlag, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DDevice8** ppReturnedDeviceInterface );
== Viewportμ μΈν =
λ·°ν¬νΈλ μ€μ μ μΌλ‘ λ λλ§μ νλ μ§μμ΄λ€. λ·°ν¬νΈκ° μμ΄λ λλ°μ΄μ€λ μ΄λμ λ λλ§μ ν μ§ λͺ¨λ₯Έλ€.
~cpp HRESULT IDirect3DDevice8::SetViewport( CONST D3DVIEWPORT8* pViewport );
~cpp X = 0: μ’νκ³μ μΌμͺ½ Y = 0: μ’νκ²μ μ€λ₯Έμͺ½ ν½μ Width = 800: (λκ° νλ©΄μ)λμ΄ Height = 600: (λκ° νλ©΄μ) λμ΄ MinZ = 0.0f : Zμ μ΅μκ°. λκ° 0.0f MaxZ = 1.0f : Zμ μ΅λκ°, λκ° 1.0f
Direct3Dμμ μ¬μ©νλ μμ ¶
Direct3Dμμ μ¬μ©νλ μμμ D3DCOLOR μ΄λ€. (3Dμμλ COLORREFμλ€.) μ κ²μ μ μνλ λ§€ν¬λ‘μλ λ€μκ³Ό κ°μ μΈκ°μ§κ° μλ€.
~cpp RGB(r, g, b); // λ³΄ν΅ μ¬μ©νλ μμ λ§€ν¬λ‘ D3DCOLOR_ARGB(a, r, g, b); // 맨 μμ μνκ°μ΄ λ€μ΄κ°λ€. D3DCOLOR_RGBA(r, g, b, a); // 맨 λ€μ μνκ°μ΄ λ€μ΄κ°λ€. D3DCOLOR_XRGB(r, g, b); // λ³΄ν΅ μ¬μ©νλ λ§€ν¬λ‘μ μ¬μ©λ²μ΄ κ°λ€. μ΄λ a κ°μ 0μ΄ μλ 255(μ΅λκ°)μ΄ λ€μ΄κ°λ€.
Viewportμ ν΄λ¦¬μ΄ ¶
λ°±λ²νΌλ₯Ό μΉ μ§μ°λ ν¨μλ₯Ό 보μ
μ±κ³΅νλ©΄ D3D_OKκ° λ¦¬ν΄λλ€.
μμͺ½μ λ λ³μλ ν¨κ» μμ§μΈλ€. countμλ 0μ λ£μΌλ©΄ λκ³ pRectλ NULLμ λ£μ΄μ£Όλ©΄ λλ€. countκ° 0μ΄ μλλΌλ©΄ pRectμλ countμ κ°μλ§νΌ D3DRECTμ λ°°μ΄μ΄ λ€μ΄κ°λ€. κ·Έ RectλΆλΆλ§ ν΄λ¦¬μ΄ν μ μλ€.
D3DCLEAR_STENCIL, D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER μΈκ°κ° μλλ°, λ³΄ν΅ D3DCLEAR_TARGETλ₯Ό μ¬μ©νλ€.
λ€λ²μ§ΈμΈμμλ μμ μ§μ νλ€.
Zμ Stencilμ 12μ₯μμ.. ( κ·Έλ₯ 0μ λ£μ μ§κΈμ..)
~cpp HRESULT IDirect3DDevice::Clear( DWROD count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil );
Present The Scene ¶
λ°±λ²νΌμ κ·Έλ¦Όμ΄ λ€μ΄μ€κ±°λ ν΄λ¦¬μ΄ ν κ²½μ°μ κ·Έκ²μ μμΌλ‘ λκ³ λμμΌ νλ€. κ·Έκ²μ νλ ν¨μκ° Presentν¨μμ΄λ€.
κ²°κ³Όκ°μ D3D_OK, μ€ν¨νμκ²½μ°μ D3D_INVALIDCALLμ΄λ D3D_DEVICELOSTκ° λ¦¬ν΄λλ€.
λ€ μΈμ λͺ¨λ NULLμ λ£μ΄μ£Όλ©΄ λλ€. (νλ μ νΈλ ν νλ©΄λ¨μλ‘ νλ κ²½μ°κ° λλΆλΆμ΄κΈ° λλ¬Έμ΄λ€.)
~cpp HRESULT IDirect3DDevice8::Present( CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion )