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