U E D R , A S I H C RSS

Direct Draw/DD Util


1. ๊ฐœ์š”

TheWarOfGenesis2RํŽ˜์ด์ง€์˜ ๊ฐœ์„ค์— ๋”ฐ๋ผ ์‚ฌ์šฉ๋ฒ•์„ ๋ชจ์๋‹ˆ๋‹ค.

2. DDUtil

DXSDK์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜ ๋ชจ์Œ์ง‘.(ใ…ก.ใ…กa) (Direct Draw ์˜ Wrapping Class ๊ฐ€ ๋˜๊ฒ ์ง€์š”.)

์ƒ๊ฐ๋ณด๋‹ค ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šด DX์˜ ์‚ฌ์šฉ์„ ๊ทธ๋‚˜๋งˆ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ๋“ค์ด๋‹ค

DDUtil์•ˆ์—๋Š” ๋‘๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค

2.1. CDisplay

DirectDraw์˜ ์ƒ์„ฑ๊ณผ Surface์™€ ์—ฐ๊ฒฐ์„ ๋‹ด๋‹นํ•˜๋Š” Class
CDisplay์˜ ํ•จ์ˆ˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค.

1. ์ดˆ๊ธฐํ™”
~cpp 
CreateFullScreenDisplay(HWND hWnd, DWORD dwWidth, DWORD dwHeight, DWORD dwBPP) 
DirectDraw ์žฅ์น˜๋ฅผ ํ’€์Šคํฌ๋ฆฐ ๋ชจ๋“œ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  • hWnd : ํ˜„์žฌ ์œˆ๋„์šฐ์˜ ํ•ธ๋“ค
  • dwWidth : ์ƒ์„ฑํ•  ๊ฐ์ฒด์˜ ๋„“์ด
  • dwHeight : ์ƒ์„ฑํ•  ๊ฐ์ฒด์˜ ๋†’์ด
  • dwBPP : ์ƒ์„ฑํ•  ๊ฐ์ฒด์˜ ์ƒ‰์ƒ์ˆ˜ (8, 16, 24, 32..)

~cpp 
CreateWindowedDisplay HWND hWnd, DWORD dwWidth, DWORD dwHeight) 
์œ„์™€ ๊ฐ™์€ ์ผ์„ ํ•˜์ง€๋งŒ ์ฐฝ๋ชจ๋“œ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ƒ‰์ƒ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์œˆ๋„์šฐ ๋ฐ”ํƒ•ํ™”๋ฉด์˜ ์ƒ‰์ƒ ์ˆ˜๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

2. Surface์ƒ์„ฑ
์„œํ”ผ์Šค๋Š” ๊ทธ๋ฆผ์„ ๋‹ด๋Š” ๊ทธ๋ฆ‡์ด๋‹ค.

~cpp 
CreateSurface( CSurface **ppSurface, DWORD dwWidth, DWORD dwHeight) 
๋ณดํ†ต์˜ ์„œํ”ผ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

~cpp 
CreateSurfaceFromBitmap(CSurface** ppSurface, TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight) 
๋น„ํŠธ๋งต์œผ๋กœ๋ถ€ํ„ฐ ์„œํ”ผ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • strBMP : ๋น„ํŠธ๋งต ํŒŒ์ผ์˜ ํŒŒ์ผ๋ช…์„ ๋„ฃ๋Š”๋‹ค.
  • ๋„“์ด์™€ ๋†’์ด๋Š” ๋น„ํŠธ๋งต์˜ ํฌ๊ธฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

  • ~cpp 
    CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont, TCHAR* strText, COLORREF crBackground, COLORREF crForeground) 
    
    ๋ฌธ์ž์—ด๋กœ๋ถ€ํ„ฐ ์„œํ”ผ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    3. ํŒ”๋ ˆํŠธ
    ์ƒ‰์ƒ์ˆ˜๊ฐ€ ์ ์€ ๋น„ํŠธ๋งต์˜ ๊ฒฝ์šฐ์—๋Š” ํŒ”๋ ˆํŠธ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

    ~cpp 
    CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE *ppPalette, const TCHAR *strBMP)
    
    ํŠน์ •ํ•œ ๋น„ํŠธ๋งต ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํŒ”๋ ˆํŠธ๋ฅผ ์–ป์–ด์˜จ๋‹ค.

    ~cpp 
    SetPalette( LPDIRECTDRAWPALETTE pPalette)
    
    CDisplay ์— ํŠน์ •ํ•œ ํŒ”๋ ˆํŠธ๋ฅผ ์„ธํŒ…ํ•œ๋‹ค.

    4. ์„œํ”ผ์Šค(๊ทธ๋ฆผ)์˜ ์ถœ๋ ฅ
    ์„œํ”ผ์Šค์˜ ๊ทธ๋ฆผ์„ ๋ฐฑ ๋ฒ„ํผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

    ~cpp 
    ShowBitmap(HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette)
    
    HBITMAPํ˜•์˜ ๋น„ํŠธ๋งต์„ ํŠน์ •ํ•œ ํŒ”๋ ˆํŠธ๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

    ๋‹น์—ฐํžˆ ์ „์— ์žˆ๋˜ ๊ทธ๋ฆผ์€ ์ง€์›Œ์ง„๋‹ค.

    ~cpp 
    ColorKeyBlt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT *prc)
    
    ์ปฌ๋Ÿฌํ‚ค(ํˆฌ๋ช…์ƒ‰)๋ฅผ ๊ฐ€์ง„ ์ฑ„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. prc๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

    ~cpp 
    Blt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT *prc, DWORD dwFlags)
    
    ์ปฌ๋Ÿฌํ‚ค๋ฅผ ๋บ€์ฑ„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ dwFlags์— DDBLTFAST_SRCCOLORKEY๋ฅผ ๋„ฃ์–ด์ค€๋‹ค๋ฉด ColorKeyBlt์™€ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค.

    ์—ญ์‹œ prc๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

    ~cpp 
    Blt(DWORD x, DWORD y, CSurface *pSurface, RECT *prc)
    
    CSurfaceํ˜•์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. prc๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    5. ํ™”๋ฉด์˜ ๊ฐฑ์‹ 
    ์œ„์˜ Bltํ•จ์ˆ˜๋“ค์€ ๋ฐฑ ๋ฒ„ํผ์— ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋“ค์ด๋‹ค. ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ฐฑ ๋ฒ„ํผ์— ์ถœ๋ ฅํ–ˆ์œผ๋ฉด ๋‹ค์Œ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์ž

    ~cpp 
    Present()
    
    ๋ฐฑ ๋ฒ„ํผ์— ์ถœ๋ ฅ๋˜์–ด์žˆ๋Š” ๋‚ด์šฉ์„ ํ˜„์žฌ ํ™”๋ฉด์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ™”๋ฉด์„ ๋ชจ๋‘ ์™„์„ฑํ•œ ํ›„์— ์‚ฌ์šฉํ•œ๋‹ค.

    ~cpp 
    Clear()
    
    ๋ฐฑ ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ง€์šด๋‹ค.

    ~cpp 
    UpdateBounds()
    
    CDislpay์˜ ๋ฉค๋ฒ„ m_rcWindow๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ์ € CRectํ˜• ๋ณ€์ˆ˜์—๋Š” ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.





    2.2. CSurface

    Surface์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” Class

    1. ์ดˆ๊ธฐํ™”
    ~cpp 
     CSurface *surface = NULL;
    
    2. ์ปฌ๋Ÿฌํ‚ค ์„ธํŒ…
    ~cpp 
     surface->SetColorKey(DWORD dwColorKey);
    
    ์ปฌ๋Ÿฌํ‚ค(ํˆฌ๋ช…์ƒ‰)์œผ๋กœ ์‚ฌ์šฉํ•  ์ƒ‰์„ COLORREF (RGB) ํ˜•์— ๋งž์ถ”์–ด์„œ ์ง‘์–ด๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

    ๋Œ€๊ฐœ ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š” ์ƒ‰์„ ์‚ฌ์šฉํ•œ๋‹ค.
    3. ๋น„ํŠธ๋งต์œผ๋กœ surface๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด surface์— ์ง์ ‘ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
    ~cpp 
     surface->DrawBitmap(...);
    

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