1. κ°κ΄ ¶
DirectX 8.1μ μ΄μ©ν DirectDrawλ‘ λ¬΄μΈκ°λ₯Ό λ§λ€μ΄ 보μ.
11κΈ° μ΄μ νΈ μ λλ€.
κ·Ήν κ°μΈμ μΈ λ¬Έμκ° λ κ² κ°λ€μ.
DeleteMe λλ κ»΄μ€~~~ - μΈμ
11κΈ° μ΄μ νΈ μ λλ€.
κ·Ήν κ°μΈμ μΈ λ¬Έμκ° λ κ² κ°λ€μ.
DeleteMe λλ κ»΄μ€~~~ - μΈμ
2. DirectX 8.1 SDK ¶
κΉλλ° μ΄λ €μμ΄ μ‘°κΈ μμλ€. μ€μ ν λΆλΆμ΄ μκΈ° λλ¬Έμ.
Visual C++ -> Tools -> Options -> Directoriesμμ
Include Files μλ C:\DXSDK\INCLUDEλ₯Ό
Library Files μλ C:\DXSDK\LIBλ₯Ό μΆκ°ν΄μΌνλ€.
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λ₯Ό μΆκ°ν΄μΌνλ€.
ddraw.libμ dxguid.libλ₯Ό μΆκ°ν΄μΌνλ€.
κ·Έλ¦¬κ³ μμ€νμΌμ μλΆλΆμ
#include <ddraw.h>
λ₯Ό μΆκ°ν΄μΌνλ€.
#include <ddraw.h>
λ₯Ό μΆκ°ν΄μΌνλ€.
3. DirectDrawμ κ³Όμ (?) ¶
μμ€λ₯Ό μ³λ³΄λ©΄μ λλ μ μ΄λ€
DirectDrawκ°μ²΄μ μμ± -> νλ©΄μ μμ±(Front, Back, OffScreen) -> κ·Έλ¦¬κ³ .. νλ©΄ λ€μ§κΈ°..
μ€κ°μ€κ° λ μ€μν λ΄μ©μ΄ μμ κ²μ΄λ€.
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;
- SetCooperativeLevelμ μΈμ.
- DDSCL_ALLOWMODEX : ModeXλ₯Ό μ¬μ© κ°λ₯νκ² ν΄μ€λ€λλ°. μμ μλ€.(μμ μ μ°λ νλ©΄ λͺ¨λλΌκ³ νλ€.)
- DDSCL_ALLOWREBOOT : Ctrl+Alt+Delμ μ¬μ© κ°λ₯νκ²
- DDSCL_EXCLUSIVE : λ
μ λͺ¨λλ₯Ό μ¬μ© κ°λ₯νκ², DDSCL_FULLSCREEN κ³Ό ν¨κ» μ°μΈλ€.
- DDSCL_FULLSCREEN : νμ€ν¬λ¦° λͺ¨λ
- DDSCL_NORMAL : 보ν΅μ μλμ° μ΄ν리μΌμ΄μ
- DDSCL_NOWINDOWCHANGES : μ΅μν/μ΅λνλ₯Ό νμ©νμ§ μλλ€.
- DDSCL_ALLOWMODEX : ModeXλ₯Ό μ¬μ© κ°λ₯νκ² ν΄μ€λ€λλ°. μμ μλ€.(μμ μ μ°λ νλ©΄ λͺ¨λλΌκ³ νλ€.)
- SetDisplayModeμ μΈμ.
- 640 : κ°λ‘ν΄μλ
- 480 : μΈλ‘ν΄μλ
- 8 : μμ (bitμ, 8μ 256컬λ¬, 16μ High컬λ¬)
- 0 : Refresh Rate, 0μ λλ°μ΄μ€ κΈ°λ³Έκ° (λκ° 0μΌλ‘ λλλ€.)
- 0 : μμ¨μ
- 640 : κ°λ‘ν΄μλ
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μμ κ²°μ ν΄μ€ μ±κ²©λ€μ λ³μλ₯Ό μ ν΄μ€λλ€.
- dwSize : ddsdμ ν¬κΈ°κ° λ€μ΄κ°λλ€.
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);
- νΈλ€μ μ»μ΄μ¨λ€.
- 리μμ€μ IDλ₯Ό νμ λ§κ² κ³ μ³μ€λ€.
- BITMAPμ IMAGE_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μ κ·Έλ¦°λ€.
4.3. κ²°λ‘ ¶
μ΄λ‘ λ§ μ΅νλκ³ .. sdk μ ν¬ν¨λμ΄ μλ..
ddutil.h ddutil.cpp dxutil.h dxutil.cpp λ§ μμΌλ©΄.. λΉνΈλ§΅μ κ·Έλ₯ μ°μ μ μκ΅°μ..
γ ‘.γ ‘ λ.. κ·Έ μμ€λ₯Ό λ―μ΄ κ³ μΉ λ§ν 건λμ§λ μκ΅°μ.. μλ μλμ΄ μμ΄μ.
κ±°κΈ°μ νμμμ΄λ³΄μ΄λκ² μ€μ΄κ³ μΈλ§νκ±°λ§ μΆλ €μ.. μλ‘.. λ§λ€μ΄λ³΄λμ§λ§. ν΄μΌκ² λ€μ.
DirectDrawκ°.. νμμλ€λ μ리λ₯Ό μ΄μ .. μκ±°κ°μμ
μΏ¨λ. κ·ΈλΌ.. APIμ λν΄μ 곡λΆν΄ λ΄μΌκ² λ€μ
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λ₯Ό ν΅ν΄ νννλ κΈ°λ²λ€λ§ μμλ μκ°λκ³ μμ΄μ μνκΉκΈ°λ νμ§λ§.^^
μ νΈ κ·Έλλ.. 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λ₯Ό ν΅ν΄ νννλ κΈ°λ²λ€λ§ μμλ μκ°λκ³ μμ΄μ μνκΉκΈ°λ νμ§λ§.^^
See Also DirectDraw/DDUtil









