U E D R , A S I H C RSS

2d In Direct3d/Chapter1

1. Initializing Direct3D

1.1. Initialization Step

  1. IDirect3D8 ๊ฐฅผ งŒ“ ‹ค.
  2. ˜ธ™˜„ฑ žˆŠ” IDirect3D8 ๊ฐฅผ ๊ฒ€‚ฌ•œ ›„,   ••œ ””ฐ”Šค ƒ€ž…„ ๊ณ ฅธ‹ค.
  3. ””Šค”Œ ˆ “œ™€ –Œ‘„ฐฅผ „ ƒ•œ‹ค.
  4. IDirect3DDevice8 ๊ฐฅผ งŒ“ค๊ณ  ˆ๊ธฐ™”•œ‹ค.
  5. …Šคณฅผ ‚ฌšฉ• ๊ฒŒž„ ฏธ€ฅผ ถˆŸฌ“คธ‹ค.
     ‡๊ฒŒ จ†“๊ณ  ƒ‹นžˆ ๊ฐ„‹จ•œ ž‘—…‹ค. -_-;;

1.2. Purpose of the IDirect3D8 Object

๊ฒƒ„ งŒ“œŠ” œ Š” ๊ฐ„‹จ•˜‹ค. IDirect3DDevice8 ๊ฐฅผ งŒ“ค๊ธฐ œ„•„œŠ” "๊ผญ" •„š”•˜๊ธฐ •Œฌธ— งŒ“ ‹ค.  ๊ฐ—„œŠ” ‹คงˆ ธ ž‘—…‹คŠ” ˆ๊ธฐ™”ฅผ „™€ฃผŠ” —ญ• „ ฃผกœ •œ‹ค.

1.3. Creating IDirect3D8 Object

๊ทธŸผ ‹ค œกœ งŒ“ค–ž. งŒ“ค•Œ—Š” ‹คŒ •ˆ˜๊ฐ€ •„š”•˜‹ค.

~cpp 
IDirect3D8* Direct3DCreate8 (
  UINT SDKVersion;
);
  1. IN œ ผ•œ ธžธ SDKVersion—Š” SDK˜ ฒ„ „„ „ฃ–€‹ค. 8.0  ‡๊ฒŒ ง‘–„ฃŠ” ๊ฒƒ •„‹ˆผ € •˜–žˆŠ” งคฌกœ๊ฐ€ žˆ‹ค. ‚ฌšฉ•˜Š” ฐฉ•€ ‹จ •œ๊ฐ€€ฟ‹ค.


~cpp 
IDirect3D8* pd3d = NULL; // ฌธ„ฐฅผ •œ๊ฐœ งŒ“ค–„œ
pd3d = Direct3DCreate8( D3D_SDK_VERSION ); //  ‡๊ฒŒ ƒ„ฑ•œ‹ค.
///// • œ• •ŒŠ”  ‡๊ฒŒ
if( pd3d )
{
  pd3d->Release();
  pd3d = NULL;
}

1.4. Examining Capabilities

š”ƒˆŠ” “จ„ฐงˆ‹ค ‘ ‹คฅธ ‚ฌ–‘„ ๊ฐ–๊ณ  žˆ‹ค. ๊ณผ—ฐ ๊ทธ “จ„ฐ๊ฐ€ ––ค๊ฒƒ„ €›•˜Š”€ ˜ธ™˜„ฑ„ ๊ผญ ฌ•••œ‹ค.

1.4.1. Adapter

„คงˆ ๊ทธž˜”ฝ“œ(Adapter)ฅผ —ฌŸฌ๊ฐœ ‹คŠ” ง‘€ ”•˜€ •Š„ ๊ฑฐผ ƒ๊ฐ•˜€งŒ, งŒผ˜ ‚ฌƒœฅผ Œ€น„•„œ ‘ งŒ“ค– ‘—ˆ‹ค

~cpp 
UINT IDirect3D8::GetAdapterCount();
  1. RET ‡๊ฐœ˜ –Œ‘„ฐ๊ฐ€ žˆŠ”€ •Œ ค€‹ค. 1๊ฐœ๊ฐ€ žˆœผ 1, 2๊ฐœ๊ฐ€ žˆœผ 2‹ค.

    –Œ‘„ฐ—Š” ‘ ฒˆ˜ธ๊ฐ€ ™–žˆ‹ค. ฒซฒˆงธ –Œ‘„ฐ—Š” 0, ‘ฒˆงธ –Œ‘„ฐ—Š” 1, Ÿฐ ‹‹ค. 0€ ๊ธฐณธœผกœ žˆ๊ธฐ •Œฌธ— งคฌกœกœ„ งŒ“ค– ธ žˆ‹ค. D3DADAPTER_DEFAULT งคฌกœ‹ค. 0ฒˆ –Œ‘„ฐฅผ ๊ธฐณธ –Œ‘„ฐผ๊ณ „ •œ‹ค.

    ๊ทธ –Œ‘„ฐŠ” ––ค ƒƒœผ๊นŒ

~cpp 
HRESULT GetAdapterIdentifier {
  UINT Adapter,
  DWORD Flags,
  D3DADAPTER_IDENTIFIER8* pIdentifier
};
  1. RET HRESULT˜•˜ ๊ฐ’„ ฆฌ„•œ‹ค. „ฑ๊ณต•˜ D3D_OK, ‹คŒจ•˜ D3D_INVALIDCALL ‚˜˜จ‹ค.
  2. IN ฒซฒˆงธ ธžŠ”, –Œ‘„ฐ˜ ฒˆ˜ธ‹ค. ‹น—ฐžˆ D3DADAPTER_DEFAULTฅผ „ฃ–€‹ค.
  3. IN ‘ฒˆงธ ธžŠ” ”Œž˜๊ทธ‹ค. 0‚˜ D3D_ENUM_NO_WHQL_LEVEL„ „ฃ„ ˆ˜ žˆ€งŒ, Œ€๊ฐœ 0„ „ฃŠ”‹ค.
  4. OUT „ธฒˆงธ ธžฅผ ถœ ฅ๊ฐ’‹ค. ๊ทธ๊ณณ˜ ฉคฒ„ €ˆ˜Š” ‹คŒ๊ณผ ๊ฐ™‹ค.

~cpp 
    Driver : “œผฒ„˜ ฆ„
    Description : –Œ‘„ฐ˜ „ค…
    DriverVersion : “œผฒ„˜ ฒ„ „
    VendorID, DeviceID, SubSysID, Revision : นฉ…‹งˆ‹ค ‹€ คš”
    DeviceIdentifier : “œผฒ„‚˜ –Œ‘„ฐฅผ œ„•œ GUID(?)
    WHQLLevel : ธฆ‚ งœ

1.4.2. Device Type

””ฐ”Šค˜ ƒ€ž…„ ––˜จ‹ค.

~cpp 
HRESULT GetDeviceCaps(
  UINT Adapter,
  D3DDEVTYPE DeviceType,
  D3DCAPS8* pCaps
);
งŒ“ค ˆ˜ žˆŠ” ””ฐ”Šค˜ ƒ€ž…€ „ธ ๊ฐ€€๊ฐ€ žˆ‹ค. (2ฒˆงธ ธž˜ ๊ฐ’œผกœ ‚ฌšฉ•œ‹ค.)
  1. D3DDEVTYPE_HAL : •˜“œ›จ–—„œ €›•˜Š” ๊ธฐŠฅ„ ‚ฌšฉ•œ‹ค.
  2. D3DDEVTYPE_REF : HAL ‹ค Аฆฌ€งŒ †Œ”„Šธ›จ– œผกœ €›
  3. D3DDEVTYPE_SW : •˜“œ›จ– ๊ฐ€†„  „˜€ ‚ฌšฉ•˜€ •Š๊ณ  †Œ”„Šธ›จ– œผกœ —ฎฌ ˆ…˜

1.5. Display Format

””Šค”Œ ˆ˜ ฌงท„  €žฅ•˜Š” ฐ„ฐ˜• D3DFORMATผŠ” ˜•ƒœ‹ค. A,R,G,B „ค๊ฐ€€˜ ๊ฐ’„ ‡น„Šธ”ฉ ๊ฐ–Š”€ฅผ ƒ„ธ•˜๊ฒŒ  ••  ˆ˜ žˆ‹ค.
ž„ธ•œ ๊ฒƒ€ MSDN„,
  1. 32น„Šธ ฌงทœผกœŠ” D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8 “ฑ žˆ‹ค.
  2. 24น„Šธ ฌงทœผกœŠ” D3DFMT_R8G8B8  žˆ‹ค.
  3. 16น„Šธ ฌงทœผกœŠ” D3DFMT_R5G6B5, D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5, D3DFMT_A4R4G4B4 “ฑ žˆ‹ค.

1.6. Enumeration Display Mode

1.6.1. Looking at Adapter Display Modes

‹ค–‰ž˜ –Œ‘„ฐ๊ฐ€ ––ค “œฅผ ‘œ‹œ•  ˆ˜ žˆŠ”€ •Œ•„ž. จผ € ‡๊ฐ€€ “œฅผ ‘œ‹œ•  ˆ˜ žˆŠ”€ •Œ•„ž

~cpp 
UINT IDirect3D8::GetAdapterModeCount(
  UINT Adapter;
);
  1. Adapter—Š” –Œ‘„ฐ˜ ฒˆ˜ธ(D3DADAPTER_DEFAULT)ฅผ „ฃŠ”‹ค. ฆฌ„๊ฐ’€ ‘œ‹œ•  ˆ˜ žˆŠ” “œ˜ ๊ฐœˆ˜

    ––ค “œ๊ฐ€ ––๊ฒŒ ‘œ‹œ•˜Š”€ฅผ •Œ•„ ค

~cpp 
HRESULT IDirect3D8::EnumAdapterModes(
  UINT Adapter,
  UINT Mode,
  D3DDISPLAYMODE* pMode
);
  1. Adapter—Š” –Œ‘„ฐ˜ ฒˆ˜ธฅผ, Mode—Š” ‘œ‹œ•  “œ˜ ฒˆ˜ธ(0 ~ GetAdapterModeCount() - 1˜ ฒ”œ„)ฅผ „ฃŠ”‹ค.
  2. pMode— ๊ทธ “œ˜  •๊ฐ€ ‚˜˜จ‹ค.

~cpp 
  Width : ๊ฐ€กœญ
  Height : „ธกœญ
  RefreshRate : ฃผ‚ฌœจ
  Format : ฌงท(•ž— ‚˜™”˜)

1.6.2. Getting the Current Display Mode

˜„žฌ ––ค “œธ€ ––˜ฌ ˆ˜ žˆ‹ค.

~cpp 
HRESULT GetAdapterDisplayMode(
  UINT Adapter,
  D3DDISPLAYMODE* pMode
);
ธžŠ” œ„˜๊ฒƒ๊ณผ ๊ฐ™‹ค.

2. Checking For Compatible Formats

2.1. Checking Resource Formats

2.2. Checking Support


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