E D R , A S I H C RSS

Direct Draw


1. ฐœ€

DirectX 8.1„ ดšฉํ•œ DirectDrawกœ ฌด–ธ€ งŒ“ค–ด ณดž.

11ธฐ ด„ ํ˜ธ ž…‹ˆ‹ค.

ํžˆ ฐœธ ธ ฌธ„œ€  ฒƒ ฐ™„š”.

DeleteMe ‚˜„ ปดค˜~~~ - ธˆ˜

2. DirectX 8.1 SDK

ŒŠ”ฐ –ด ค›€ด กฐธˆ žˆ—ˆ‹ค. „ •ํ•  €„ด žˆธฐ •Œฌธ—.

Visual C++ -> Tools -> Options -> Directories—„œ

Include Files —Š” C:\DXSDK\INCLUDE

Library Files —Š” C:\DXSDK\LIB ถ”€ํ•ด•ํ•œ‹ค.

ทธฆฌณ  Project Setting -> Link -> Object/Library modules—Š”
ddraw.lib™€ dxguid.lib ถ”€ํ•ด•ํ•œ‹ค.

ทธฆฌณ  †ŒŠคํŒŒ˜ •ž€„—
#include <ddraw.h>
ถ”€ํ•ด•ํ•œ‹ค.

3. DirectDraw˜  •(?)

†ŒŠค ณณดฉด„œ Š‚€  ด‹ค

DirectDrawฐฒด˜ ƒ„ -> ํ‘œฉด˜ ƒ„(Front, Back, OffScreen) -> ทธฆฌณ .. ํ‘œฉด ’คง‘ธฐ..

ค‘„ค‘„ ” ค‘š”ํ•œ ‚ดšฉด žˆ„ ฒƒด‹ค.

4. Source

4.1. ดˆธฐํ™”

4.1.1. DirectDrawฐฒด˜ ƒ„

~cpp 
HRESULT hr
LPDIRECTDRAW7 lpDD;
hr = DirectDrawCreateEx(NULL, (void **)&lpDD, IID_IDirectDraw7, NULL); // DirectDrawฐฒด ƒ„
if(hr != DD_OK) return 0;
hr = lpDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN); // ํ™”ฉด˜  ˆฒจ„ „ •
if(hr != DD_OK) return 0;
hr = lpDD->SetDisplayMode(640, 480, 8, 0, 0);
if(hr != DD_OK) return 0;
  1. SetCooperativeLevel˜ ธž.
    • DDSCL_ALLOWMODEX : ModeX ‚ฌšฉ €Šฅํ•˜ฒŒ ํ•ด€‹คŠ”ฐ. •Œˆ˜ —†‹ค.(˜ˆ „— “ฐ˜ ํ™”ฉด ชจ“œณ  ํ•œ‹ค.)
    • DDSCL_ALLOWREBOOT : Ctrl+Alt+Del„ ‚ฌšฉ €Šฅํ•˜ฒŒ
    • DDSCL_EXCLUSIVE : …  ชจ“œ ‚ฌšฉ €Šฅํ•˜ฒŒ, DDSCL_FULLSCREEN ํ•จป˜ “ฐธ‹ค.
    • DDSCL_FULLSCREEN : ํ’€Šคํฌฆฐ ชจ“œ
    • DDSCL_NORMAL : ณดํ†ต˜ œˆ„šฐ –ดํ”Œฆฌ€ด…˜
    • DDSCL_NOWINDOWCHANGES : ตœ†Œํ™”/ตœŒ€ํ™” ํ—ˆšฉํ•˜€ •ŠŠ”‹ค.
  2. SetDisplayMode˜ ธž.
    • 640 : €กœํ•ดƒ„
    • 480 : „กœํ•ดƒ„
    • 8 : ƒ‰ƒ (bitˆ˜, 8€ 256ปฌŸฌ, 16€ HighปฌŸฌ)
    • 0 : Refresh Rate, 0€ ””ฐ”ดŠค ธฐณธฐ’ (Œ€ฐœ 0œกœ †“Š”‹ค.)
    • 0 : •ˆจš”

4.1.2. DirectDraw Front ํ‘œฉด˜ ƒ„

~cpp 
LPDIRECTDRAWSURFACE7 lpDDSFront;
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd); // ํฌธฐ  €žฅ
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT; // ตฌกฐฒด™€ backbuffercount ‚ฌšฉ€Šฅ
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX; // 1ฐจํ‘œฉด, ํ”Œฆฝ€Šฅ
ddsd.dwBackBufferCount = 1; // 2ฐจํ‘œฉด˜ ฐœˆ˜
hr = lpDD ->CreateSurface(&ddsd, &lpDDSFront, NULL); // ƒ„!
if(hr != DD_OK) return 0;
  • ddsd˜ €ˆ˜“ค
    • dwSize : ddsd˜ ํฌธฐ€ “ค–ดฐ‘‹ˆ‹ค.
    • dwFlags : ddsd˜ „ฒฉ— Œ€ํ•ด “ค–ด€Š” €„ž…‹ˆ‹ค.
    • ddsCaps.dwCaps : ” ž„ธํ•œ.. „ฒฉ..
    • ทธฆฌณ  ธฐํƒ€ €ˆ˜“ค. : dwFlag—„œ ฒฐ •ํ•ด€ „ฒฉ“ค˜ €ˆ˜  •ํ•ดค‹ˆ‹ค.

4.1.3. DirectDraw Back ํ‘œฉด˜ ƒ„

~cpp 
LPDIRECTDRAWSURFACE7 lpDDSBack;
DDSCAPS2 ddscaps;
ZeroMemory(&ddscaps, sizeof(ddscaps)); // ฉ”ชจฆฌ ดˆ€ํ™”
ddscaps.dwCaps = DDSCAPS_BACKBUFFER; // 2ฐจํ‘œฉด
hr = lpDDSFront->GetAttachedSurface(&ddscaps, &lpDDSBack); // 1ฐจํ‘œฉด  ‘ํ•ฉ(ฐ™€ †„˜ ํ‘œฉด„ ƒ„)
if(hr != DD_OK) return 0;
lpDDSBack->AddRef();

4.1.4. DirectDraw OffScreen˜ ƒ„

~cpp 
LPDIRECTDRAWSURFACE7 lpDDSOff;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH; // †’ด™€ „“ด € •ํ•  ˆ˜ žˆŒ
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; // ˜คํ”„Šคํฌฆฐž„„ ํ‘œ‹œ
ddsd.dwHeight = 16; // †’ด
ddsd.dwWidth = 16; // „“ด
hr = lpDD->CreateSurface(&ddsd, &lpDDSOff, NULL); // ํ‘œฉด ƒ„!
if(hr != DD_OK) return 0;

4.2. BMP Resource ํ™”ฉด— ฟŒ คณดž!

‹จ HBITMAPํ˜•˜ „ํŠธงต„ –ป–ด™€•ํ•œ‹ค.
~cpp 
HBITMAP hb;
hb = (HBITMAP) LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP), IMAGE_BITMAP, cxDesire, cyDesire, LR_CREATEDIBSECTION);
  1. ํ•ธ“ค„ –ป–ด˜จ‹ค.
  2. ฆฌ†ŒŠค˜ ID ํ˜•— งžฒŒ ณ ณ€‹ค.
  3. BITMAP€ IMAGE_BITMAP„.
  4. €กœ˜ „“ด
  5. „กœ˜ „“ด
  6. ใ…ก.ใ…ก?
ดกœ BITMAPํ˜•„ –ปŠ”‹ค.
~cpp 
BITMAP bmp;
GetObject(hb, sizeof(bmp), &bmp);
bmp.bmWidth ™€ bmp.bmHeightกœ „ํŠธงต˜ ํฌธฐ –ป–ด‚ ˆ˜ žˆ‹ค.
~cpp 
LPDIRECTDRAWSURFACE7 lpDDS = NULL;
DDSURFACEDESC2 ddsd;
ddsd.dwSize = sizeof(ddsd);
lpDDS->GetSurfaceDesc(&ddsd);
HDC hDC;
HDC hImageDC;
lpDDS->GetDC(&hDC);
hDCImage = CreateCompatibleDC(NULL);
SelectObject(hImageDC, hBMP);
StreachBlt(~~);
lpDDS->ReleaseDC(hDC);
DeleteDC(hImageDC);
ดŸฐ ตฌกฐด‹ค. imagedc—  € ทธ„ ฟŒฆฌณ  ทธฒƒ„ hdc— ทธฆฐ‹ค.

‹จ bmpํŒŒ„ ฐธฐ œ„ํ•ด„œŠ”
  1. bmpํŒŒ„ surface— ฐŠ”‹ค. (œ„™€ ฐ™€ ฐฉฒ•œกœ)
  2. Blt‚˜ Blifast ํ†ตํ•ด„œ BackSurface— ฐŠ”‹ค.
  3. ทธฒƒ„ Flipํ•œ‹ค.
  4. ทธŸฌฉด ทธฒƒด FrontSurface— ฐํ˜€„œ ํ™”ฉด— ณดดฒŒ œ‹ค.
†ŒŠค ณดณ  ‚ดฆฐ ฒฐก .

4.3. ฒฐก 

ดก งŒ ตํ˜€†“ณ .. sdk — ํฌํ•จ˜–ด žˆŠ”..
ddutil.h ddutil.cpp dxutil.h dxutil.cpp งŒ žˆœฉด.. „ํŠธงต€ ทธƒฅ ฐ„ ˆ˜ žˆตฐš”..

ใ…ก.ใ…ก ญ.. ทธ †ŒŠค œ–ด ณ  งŒํ•œ •€„ —†ตฐš”.. ›Œ‚™ ž˜˜–ด žˆ–ด„œ.

ธฐ„œ ํ•„š”—†–ดณดดŠ”ฒƒ „ดณ  “ธงŒํ•œงŒ ถ” ค„œ.. ƒˆกœ.. งŒ“ค–ดณด˜€งŒ. ํ•ด•ฒ „š”.

DirectDraw€.. ํ•„š”—†‹คŠ” †Œฆฌ ด œ .. •Œฐ™•„š”

ฟจŸญ. ทธŸ.. API— Œ€ํ•ด„œ ณต€ํ•ด ด•ฒ „š”

4.3.1. Thread

˜ํ˜„ œ šฉ„„ œ„ํ•ด.. ’ค— ‚˜˜คŠ” 7ด‚˜ 2Š” .. ใ…กใ…ก; ํ•˜ํ•˜..

„ ํ˜ธ ทธž˜„.. 8.1 ”€ €—..ใ…กใ…ก;

ํ•ด„ €‚˜€‹ค€ ํ•œงˆ””.. ^^;; DX ดˆธฐํ™”  •€ ด „„ „ ํก‚ฌํ•˜ตฐš”.. Œ.. ดˆธฐํ™” ธํ„ฐํŽ˜ดŠค ํŒŒ•…ํ–ˆ‹คฉด.. ‹คด ‰ํŠธ —‘Šค€ –ด–ปฒŒ ‚ด€ œกœ ž‘™ํ•ด„œ ฐ˜ œˆ„šฐ ํ”„กœทธž˜ฐ ณด‹ค  ฅธ —‘„Šค ฉ”‹ˆฆ˜„  œณตํ•˜Š”€ ํŒŒ•…ํ•˜‹œตฌš”.. ™ งŒํ•˜ฉด DX “ฐ€งตฌ.. ถ”€ ธ ดํŽ™ํŠธ“„ ตฌํ˜„ํ•ดณดŠ”ฒŒ ข‹„ฒƒ ฐ™„š”.. •ŒํŒŒธ” Œ”ฉ„ ‘šฉํ•œ —ฌŸฌ€€ ธฐฒ•(ํŽ˜ด“œ ธ•„›ƒด‚˜  „ํ™˜.. ญทธŸฌ“œ).. ํ•˜ตฌ..  „ ชปํ•ดดค€งŒ.. ธ”Ÿฌง ํ•„„ฐ™€ฒƒ‘.. „œํŽ˜ดŠค— ง ‘ –ต„Šค ํ•˜Š”ณต€ํ•˜ฉด.. ํ•ดงŒ ํ• ฒƒ ฐ™ตฐš”.. ทธฆฌตฌ.. Œ.. งค ํ—ˆ ‘ ํ”Œฐ„ ํ•˜ตฌ žˆ€งŒ.. ทธž˜‘ €ฒจšด ดˆธฐํ™”  •„ ‹จถ•‹œํ‚คธฐ œ„ํ•ด –ดŠ •„ ชจ“ˆํ™”˜ฒŒ ž…„ ตฌถ•ํ•˜ฉด ข‹ฒ €š”..  „  ˆŒ€ •ˆํ•˜€งŒ.. ใ…‹ใ…‹;; ทธŸ.. žก„ด—ˆŠต‹ˆ‹~ ˆ˜ฐ~

1002 ดˆธฐํ™” •ด ด „„ „ ฐ™€ ดœ Š” Surface 7 „ ดšฉํ•ด„œฒƒ ฐ™‹คŠ”. DX8กœŠ” •„ง •ˆํ•ดด„œ..~

ฐธฐ) ํ•ด„ด€ งํ•œ ถ”€ ธ ดํŽ™ํ„“ค˜ ธฐณธ ธ •„ด””–ดŠ” '˜ƒฒ˜ฆฌ' ‹œ„— ฐฐšธ ˆ˜ žˆŠต‹ˆ‹ค. („ ํ˜ธ ํ˜ž DX ณดŠ”ฐ„ ˜™ธกœ „„€ ž˜ ‚˜€Š”“...)

1002 Output ด ธ‰ํ•˜‹คฉด DirectX Media SDK ดšฉํ•  ˆ˜„ žˆŠต‹ˆ‹ค. •ŒํŒŒธ”žœ”ฉ ธฐณธ œกœ €›ํ•ฉ‹ˆ‹ค. ทธฆฌณ  Transform Libary ดšฉํ•˜ฉด ํ™”ฉด  „ํ™˜ € จœ ํŠˆ˜ํšจ“ค„ ดšฉํ•  ˆ˜„ žˆฃ . ํ•˜€งŒ, ณต€ํ•˜‹œŠ” ž…žฅ—„œŠ” ดก „ ํŒŒณ “ค–ด„œ ง ‘ ํ•ดณดŠ” ฒƒด ข‹ฒ ฃ .

ํ•ด„ €งŒณด‹ˆ .. 99“คด ฐ†” ฐฐถ”†” ํ•˜ตฌ žˆตฐ.. -0-;;; ใ…Žใ…Ž;;

DeleteMe) DX8 SDKฌธ„œ ณด‹ˆ Direct Draw˜  „ ธฐŠฅด Direct3Dกœ ํ†ตํ•ฉ ‹คŠ”ตฐ.... ณ กœ DDrawŠ” ด œŠ” ˜€ ํ‡ดƒ‰ํ•œ“.. ฟจŸญ;; by ด‰ํ™˜(„ํšŒ› ฐธฒฌ)

„ ํ˜ธ ญ.. DirectGraphicsกœ ํ†ตํ•ฉ˜—ˆ‹คณ  ํ•˜€งŒ •„ง ˜ˆ „˜ ธฐŠฅ“ค€  „€ ‚จ•„žˆณ  ˜›ํžˆ 2D •ˆํ•˜Š” ฒƒ€ •„‹ˆธฐ •Œฌธ—. ญ 2D 3D ํ†ตํ•ด ํ‘œํ˜„ํ•˜Š” ธฐฒ•“คงŒ š”ƒˆŠ” †Œฐœ˜ณ  žˆ–ด„œ •ˆํƒ€ธฐ„ ํ•˜€งŒ.^^



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:08
Processing time 0.0421 sec