Direct X GDI Direct X GDI Direct X

  • Slides: 20
Download presentation

Direct. X 와 GDI 구조 Direct. X & GDI

Direct. X 와 GDI 구조 Direct. X & GDI

Direct. X 개요

Direct. X 개요

Direct. X 개요 IDirect. Draw 7 IDirect. Draw. Surface 7 IUn. Known IDirect. Draw.

Direct. X 개요 IDirect. Draw 7 IDirect. Draw. Surface 7 IUn. Known IDirect. Draw. Palette IDirect. Draw. Clipper

Direct. X 기본 코드 설명 Direct. X 기본 코드 int Game_Init(void *parms) { if(

Direct. X 기본 코드 설명 Direct. X 기본 코드 int Game_Init(void *parms) { if( Direct. Draw. Create. Ex(NULL, (void **)&lpdd, IID_IDirect. Draw 7, NULL) != DD_OK ) { return 0; } // set cooperation level to windowed mode normal if( ( lpdd->Set. Cooperative. Level( main_window_handle, DDSCL_ALLOWMODEX | DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT ) ) != DD_OK ) { return 0; } // set the display mode if( ( lpdd->Set. Display. Mode( 640, 480, 8, 0, 0) ) != DD_OK ) { return 0; } return 1; }

2. 윈도우 협력 수준 설정 Direct. X 순서 2. 윈도우 협력 수준 설정 1)

2. 윈도우 협력 수준 설정 Direct. X 순서 2. 윈도우 협력 수준 설정 1) 윈도우 모드 lpdd->Set. Cooperative. Level( Main. Hwnd, DDSCL_NORMAL); 2) 풀 스크린 모드 lpdd->Set. Cooperative. Level( Main. Hwnd, DDSCL_EXCLUSIVE || DDSCL_FULLSCREEN);

4. Primary Surface 만들기 Direct. X 순서 4. Primary Surface 만들기 1) 서페이스란? 이미지

4. Primary Surface 만들기 Direct. X 순서 4. Primary Surface 만들기 1) 서페이스란? 이미지 정보를 읽고 쓰는 일종의 저장 공간, API함수를 사용하지 않고도 Direct. X를 통해 화면으로 직접적인 접근이 가능 - 화면에 보이는 서페이스 (Surface) : Primary(주표면) - Primary에 연결되어 있으면서 화면에 보이지 않는 서페이스 (Surface) : Back(보조표면) - Primary에 연결되어 있지 않으면서 화면에 보이지 않는 서페이스 (Surface) : Off. Screen(오프 스크린) DDSURFACEDESC 2 ddsd; LPDIRECTDRAWSURFACE 7 lpddsprimary; ddsd. dw. Size = sizeof(ddsd); ddsd. dw. Flags = DDSD_CAPS; ddsd. dds. Caps. dw. Caps = DDSCAPS_PRIMARYSURFACE; If( lpdd->Create. Surface( &ddsd, &lpddsprimary, NULL ) != DD_OK ) { /*Error*/ }

5. Secondary Surface 만들기 Direct. X 순서 5. Secondary Surface 만들기 Create. Surface( 만들어질

5. Secondary Surface 만들기 Direct. X 순서 5. Secondary Surface 만들기 Create. Surface( 만들어질 서페이스의 정보를 담고 있는 구조체, LPDDSURFACEDESC 2의 포인터, 서페이스 객체의 포인터, 다음 버전과의 호환); DDSURFACEDESC 2 ddsd; LPDIRECTDRAWSURFACE 7 lpddsprimary, lpddssecondary; ddsd. dw. Size = sizeof(ddsd); ddsd. dw. Flags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddsd. dds. Caps. dw. Caps = DDSCAPS_PRIMARYSURFACE | DDSCAP_FLIP | DDSCAPS_COMPLEX; If( lpdd->Create. Surface( &ddsd, &lpddsprimary, NULL ) != DD_OK ) { /*Error*/ } lpdd->Create. Surface( &ddsd, &lpddssecondary, NULL ); ddscaps. dw. Caps = DDSCAPS_BACKBUFFER; lpddsprimary->Get. Attached. Surface(&ddscaps, &lpddssecondary);