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.0246 sec