U E D R , A S I H C RSS

2d In Direct3d/Chapter2

Creating a Device

ด๋ฒˆ •„—„œ •  ผ€
  • IDirect3dDevice8 ๊ฐฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  • Viewport๋ฅผ ƒ„•˜๊ณ  ‚ฌšฉ•˜๋Š” ๋ฐฉ๋ฒ•
  • Viewport๋ฅผ ด๋ฆฌ–ด•˜๋Š” ๋ฐฉ๋ฒ•
  • ™”๋ฉด„ Present•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋‹ค๋ฅธ(ž˜๋ชป๋œ) Present ŒŒ๋ผ๋ฉ”„ฐ๋“ค„ ๋ฆฌ…‹•˜๋Š” ๋ฐฉ๋ฒ•

IDirect3DDevice ๊ฐฒด๋ฅผ ƒ„

ด ๊ฐฒด๋Š” IDirect3D ๊ฐฒด™€๋Š” ๋‹ฌ๋ฆฌ ‹คˆ ผ ผ„ •˜๋Š” ๊ฐฒดด๋‹ค. ด ๊ฐฒด๋ฅผ ƒ„•˜๋Š” •จˆ˜๋Š” ๋‹คŒ๊ณผ ๊ฐ™๋‹ค. IDirect3D ๊ฐฒด๋Š” ด๊ฒƒ„ ƒ„•˜๊ธฐ œ„•ด กดžฌ•œ๋‹ค๊ณ  •ด๋„ ๊ณผ–ธด •„๋‹ˆ๋‹ค.
~cpp 
HRESULT IDirect3D8::CreateDevice(
	UINT Adapter, // –ด๋Œ‘„˜ ๋ฒˆ˜ธ, D3DADAPTER_DEFAULT๋ฅผ ‚ฌšฉ
	D3DDEVTYPE DeviceType, //๋””๋ฐ”ดŠค˜ ƒ€ž„, D3DDEVTYPE_HAL„ ‚ฌšฉ
	HWND hFocusWindow, // ˜„žฌ ฐฝ˜ HWND๋ฅผ ๋„–ดค€๋‹ค.
	DWORD BehaviorFlag,
	D3DPRESENT_PARAMETERS* pPresentationParameters,
	IDirect3DDevice8** ppReturnedDeviceInterface
);
 
  • ๊ฒฐ๊ณผ๋Š” —ญ‹œ „๊ณต•˜๋ฉด D3D_OK๋ฅผ ๋ฆฌ„•œ๋‹ค.
  • BehaviorFlag—๋Š” ๋ฒ„…Šค๋ฅผ ฒ˜๋ฆฌ•˜๋Š” ๋ฐฉ๋ฒ•„„–ดค€๋‹ค. D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, D3DCREATE_SOFTWARE_VERTEXPROCESSINGค‘ •œ๊ฐ€ง€๋ฅผ ‚ฌšฉ•œ๋‹ค. (‚ฌ‹ค€ ๋” ๋งŽ€ ˜ต…˜ด žˆ๋‹ค.) ๋Œ€๊ฐœ ๋งˆง€๋ง‰ SOFTWARE๋ฅผ ‚ฌšฉ•œ๋‹ค.
  • pPresentationParameters๋Š” D3DPRESENT_PARAMERTERS˜ ฌธ„˜•ด๋‹ค.  €๊ฒƒ€ Device˜ ˜•ƒœ๋ฅผ ๊ฒฐ ••˜๋Š” ๊ตฌกฐฒดด๋‹ค.
  • ๋งˆง€๋ง‰ ธž๋กœ๋Š” ƒ„๋  ๋””๋ฐ”ดŠค˜ ๊ฐฒด๋ฅผ ๋„–ดค€๋‹ค.
  • ๋‹ค ‚ฌšฉ•œ ด›„๋Š” ๊ผญ!! Release()•จˆ˜๋ฅผ ‚ฌšฉ•˜—ฌ ‚ฌšฉ„ •ด œ‹œ‚จ๋‹ค.

    == Viewport˜ „Œ… =
    ๋ทฐฌŠธ๋Š” ‹ค œ œผ๋กœ ๋ Œ๋”๋ง„ •˜๋Š” ง€—ญด๋‹ค. ๋ทฐฌŠธ๊ฐ€ —†ด๋Š” ๋””๋ฐ”ดŠค๋Š” –ด๋””— ๋ Œ๋”๋ง„ • ง€ ๋ชจ๋ฅธ๋‹ค.
    ~cpp 
    HRESULT IDirect3DDevice8::SetViewport(
    	CONST D3DVIEWPORT8* pViewport
    );
     
  • ๊ฒฐ๊ณผ๋Š” „๊ณต•˜๋ฉด D3D_OK๋ฅผ ๋ฆฌ„•œ๋‹ค.
  • D3DVIEWPORT8 ๊ฐฒด๋Š” ๋ฉค๋ฒ„๋Š” ๋‹คŒ๊ณผ ๊ฐ™๋‹ค.
    ~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˜ ด๋ฆฌ–ด

    ๋ฐ๋ฒ„ผ๋ฅผ ‹น ง€šฐ๋Š” •จˆ˜๋ฅผ ๋ณดž
    ~cpp 
    HRESULT IDirect3DDevice::Clear(
    	DWROD count,
    	CONST D3DRECT* pRects,
    	DWORD Flags,
    	D3DCOLOR Color,
    	float Z,
    	DWORD Stencil
    );
     
  • „๊ณต•˜๋ฉด D3D_OK๊ฐ€ ๋ฆฌ„ด๋œ๋‹ค.
  • •žชฝ˜ ๋‘ ๋ณ€ˆ˜๋Š” •จ๊ป˜ ›€งธ๋‹ค. count—๋Š” 0„„œผ๋ฉด ๋˜๊ณ  pRect๋Š” NULL„„–ดฃผ๋ฉด ๋œ๋‹ค. count๊ฐ€ 0ด •„๋‹ˆ๋ผ๋ฉด pRect—๋Š” count˜ ๊ฐœˆ˜๋งŒผ D3DRECT˜ ๋ฐฐ—ดด ๋“ค–ด๊ฐ„๋‹ค. ๊ทธ Rect๋ถ€๋ถ„๋งŒ ด๋ฆฌ–ด•  ˆ˜ žˆ๋‹ค.
  • D3DCLEAR_STENCIL, D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER „ธ๊ฐœ๊ฐ€ žˆ๋Š”๋ฐ, ๋ณด†ต D3DCLEAR_TARGET๋ฅผ ‚ฌšฉ•œ๋‹ค.
  • „ค๋ฒˆงธธž—๋Š” ƒ‰„ ง€ ••œ๋‹ค.
  • Z™€ Stencil€ 12žฅ—„œ.. ( ๊ทธ๋ƒฅ 0„„ž ง€๊ธˆ€..)

  • Present The Scene

    ๋ฐ๋ฒ„ผ— ๊ทธ๋ฆผด ๋“ค–ด˜ค๊ฐ๋‚˜ ด๋ฆฌ–ด •œ ๊ฒฝšฐ—” ๊ทธ๊ฒƒ„ •žœผ๋กœ ๋Œ๊ณ ๋‚˜™€•ผ •œ๋‹ค. ๊ทธ๊ฒƒ„ •˜๋Š” •จˆ˜๊ฐ€ Present•จˆ˜ด๋‹ค.
    ~cpp 
    HRESULT IDirect3DDevice8::Present(
    	CONST RECT* pSourceRect,
    	CONST RECT* pDestRect,
    	HWND hDestWindowOverride,
    	CONST RGNDATA* pDirtyRegion
    )
     
  • ๊ฒฐ๊ณผ๊ฐ’€ D3D_OK, ‹คŒจ–ˆ„๊ฒฝšฐ—” D3D_INVALIDCALLด๋‚˜ D3D_DEVICELOST๊ฐ€ ๋ฆฌ„ด๋œ๋‹ค.
  • „ธž ๋ชจ๋‘ NULL„„–ดฃผ๋ฉด ๋œ๋‹ค. (”„๋ ˆ  Šธ๋Š” •œ ™”๋ฉด๋‹จœ„๋กœ •˜๋Š” ๊ฒฝšฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„ด๊ธฐ ๋•Œ๋ฌธด๋‹ค.)

  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:22:14
    Processing time 0.0419 sec