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