Win API/6. Double Buffering

더블 버퍼링의 기초

DesignatedRoom 2021. 4. 5. 09:55

이미지 리소스와 소스 파일은 밑에서 작업한 것을 그대로 가지고 온다.

designatedroom87.tistory.com/425

 

활용 - 애니메이션

애니메이션으로 쓸 이미지 파일은 아래의 사이트에서 구할 수 있다. 아래의 사이트에서 적당한 이미지를 고르도록 하자. www.spriters-resource.com/ The Spriters Resource This page does not work well in port..

designatedroom87.tistory.com

 

 

백버퍼를 만드는 순서

(1). 백버퍼에 비어있는 이미지로 초기화.

(2). 백 버퍼에 렌더할 데이터들을 렌더한다.

(3). 출력 전에 스크린DC에 복사.

(4). 모니터에 출력.

 

일단 기본 적인 더블 버퍼링의 기초 과정을 알아보자.

위의 소스 파일에서 대다수의 내용은 거의 다 지우는데,

배경화면 비트맵과 플레이어 비트맵만 남아있는 상태에서 시작한다.

 

아래는 WM_CREATE 메시지 부분이다.

CreateCompatibleBitmap 함수와 GetWindowLong 함수에 대해서는 아래에서 설명한다.

GetWindowLong 함수는 HINSTANCE를 얻어오기 위해서 호출한 것이다.

그 이유는 LoadBitmap 함수에서 HINSTANCE 변수를 필요로 하기 때문이다.

기존에는 HINSTANCE를 전역 변수로 두고 사용하였으나,

이번과 같이 로컬 변수로 두고 얻어 올 수 있다는 것을 보여주기 위해 사용하였다.

 

아래는 WM_PAINT 메시지이다.

 

아래는 WinMain 함수의 하단 부이다.

 

아래는 WM_DESTROY 메시지이다.

 

아래는 CreateCompatibleBitmap 함수와 GetWindowLong 함수이다.

 

 

프로그램 실행결과

 

 

소스 파일

WinMain.cpp
0.00MB