Download presentation
Presentation is loading. Please wait.
1
게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램
DirectX 2D 환경에서 슈팅게임 게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램
2
프로그램 구성 관련 함수들 static void ReleaseObject(void)
int LoadBmp(char *filename, LPDIRECTDRAWSURFACE7 DDS, DDSURFACEDESC2 ddsd, int check) int ProcessHere() long FAR PASCAL WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
3
수업운영방식-프로그래밍 헤더파일들.. #include <windows.h>
#include <ddraw.h> #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdarg.h> #include <io.h>
4
상수들… #define BMP_ID 0x4D42 // BMP 파일의 식별자(19778)
#define WINDOW_CLASS_NAME "WINCLASS" // 윈도우 클래스 명칭의 정의 #define WIDTH // BMP 의 가로 넓이 #define HEIGHT // BMP 의 세로 길이 #define PAL_COLOR // 색상 수 #define TIMER_ID #define TIMER_RATE
5
DirectDraw 객체들 LPDIRECTDRAW7 lpDD = NULL; // DirectDraw 객체
LPDIRECTDRAWSURFACE7 lpDDSPrimary = NULL; // DirectDraw 기본표면 LPDIRECTDRAWSURFACE7 lpDDSBack = NULL; // DirectDraw 보조표면 LPDIRECTDRAWPALETTE lpDDPal = NULL; // DirectDraw 팔레트 PALETTEENTRY pal[256];
6
비트맵 파일을 위한 BITMAPFILEHEADER bmpfileheader; // BMP 파일의 헤더
BITMAPINFOHEADER bmpinfoheader; // BMP 파일의 정보 PALETTEENTRY bmp_pal[256]; // BMP 파일의 팔레트 unsigned char *bmp_buffer; // BMP 그림 저장용 버퍼
7
DirectDraw객체 종료함수 static void ReleaseObject(void) { if (lpDD != NULL) { if (lpDDSPrimary != NULL) { lpDDSPrimary->Release(); // 기본표면의 해제 lpDDSPrimary = NULL; } if (lpDDPal != NULL) { lpDDPal->Release(); // 팔레트의 해제 lpDDPal = NULL; } lpDD->Release(); lpDD = NULL; } }
8
비트맵 파일 구조 BMP 파일헤더 BMP 정보헤더 팔레트 그림데이터
9
비트맵파일 읽고 출력하기 2진 파일 열기 BMP 파일헤더 BMP 정보헤더 팔레트 그림데이터 표면을 잠근다
비트맵 파일헤더 읽기 BMP 식별자를 판단하기 BMP 정보헤더 비트맵 정보헤더 읽기 팔레트 256색상의 그림인지 판단하여 컬러팔레트 읽기 팔레트를 DirectDraw 로 연계시킨다 그림데이터 그림 데이터로의 위치이동 그림 데이터 읽기 비트맵 파일 닫기 표면을 잠근다 한줄씩 버퍼에서 표면으로 복사한다 표면을 풀어준다
10
ProcessHere() DirectDraw 객체생성 표면생성 - 기본표면, 보조표면 팔레트생성 그림을 읽어오고
기본표면에 출력한다
11
플리핑(Flipping) 이란? 기본표면과 보조표면 사이의 자료이동
기본표면 : 비디오카드 메모리에 작성되며, 바로 모니터 화면에 출력 보조표면 : 비디오카드 메모리에 작성되며, 기본표면에 보내어 짐 기본표면 (Primary Surface) 비트맵1 플리핑 보조표면 (Back Buffer) 비트맵2
12
typedef struct tagBITMAPFILEHEADER { WORD bfType; // 파일형식 DWORD bfSize; // 파일크기 WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; // Specifies the offset, in bytes, from the BITMAPFILEHEADER structure to the bitmap bits. } BITMAPFILEHEADER;
Similar presentations