화면을 스무스하게 (DoubleBuffering)
Engine
Common
Common.h (펜이랑 브러쉬 객체화 구조체로)
def.h
Maths.h
yaEntity.cpp
yaEntity.h
GameObject
Base (기초가 됨)
yaGameObject.cpp
yaGameObject.h
yaMissile.cpp
yaMissile.h
yaPlayer.cpp
yaPlayer.h
High Level Interface
yaApplication.cpp (더블버퍼링 효과 만들기)
yaApplication.h
Manager
yaInput.cpp
yaInput.h ==> 키보드에서 키를 눌렀을 때 호출되는 파일들
yaSceneManager.cpp
yaSceneManager.h
yaTime.cpp
yaTime.h ==> deltatime 설정
Scene
Base ( 기초가 됨 )
yaScene.cpp
yaScene.h
yaLogoScene.cpp
yaLogoScene.h
main
framework.h
main.cpp
Resource.h
targetver.h
WindowsAPI.h
기타
API에는 더블버퍼링 기능이 없으므로 그렇게 보이도록 만들어줘야 한다
BitBlt 함수
GDI에서는 DC와 DC간에 그림으 복사할 수 있는 BitBlt라는 함수가 있다
https://blog.naver.com/tipsware/220994341959
용어 정리
더블 버퍼링(Double Buffering)
이중 버퍼링이라 불리기도 하며, 그래픽 객체에 이미지를 그릴 때 사용되는 기법이다.
API로 게임을 만들다보면 화면이 깜빡거리는데 이 깜빡거림을 없애주는게 더블버퍼링 기법이다.
Q) 왜 사용하는가 ?
A) API를 시작하다보면 비트맵 이미지를 사용하게 된다. 그 때 이미지들이 전환되면서 영상처럼 부드럽게 움직일 거라 생각하지만 실제로 이미지들이 움직일 때마다 화면이 깜빡이는 현상이 눈에 들어온다. 쉽게 말하자면 아래와 같은 상황인 것이다.
▶ 게임 캐릭터이미지를 구현할 때 이미지를 움직이게 하고 싶다.
그러나 캐릭터가 띄엄띄엄 움직임과 동시에 깜빡거리는 화면
때문에 게임할 맛이 안난다.
원리
메모리에 먼저 그림을 그린후 그 그림이 완성되면 화면에 출력해주는 것이다.
더블버퍼링 기법을 안쓸때, 프로그램은 그림을 화면에 바로 출력한다.
이는 비디오카드에 출력한단뜻인데, 비디오카드는 입출력이 매우 느리다.
그대로 출력시, 화면에 일일히 접근하여 하나하나씩 처리하기때문에 느려지고 이때문에 화면이 깜빡거린다.
하지만 메모리는 입출력이 매우매우 빠르다.
메모리에 먼저 그림을 그려준다음 그림을 다 그린후 화면에 뿌려주면 비디오카드입장에서는 한번만 처리하면 되므로 속도문제도 해결되고 물론 깜빡임도 해결된다.
https://movefast.tistory.com/6t
비트맵(Bitmap) 그래픽
비트맵 그래픽은 간단히 말해 서로 다른 점(픽셀)들의 조합으로 그려지는 이미지 표현 방식입니다. 비트맵 이미지는 정교하고 화려한 표현이 가능하여, 주로 사진 이미지에 주로 사용됩니다. 비트맵 이미지는 크기를 늘리거나 줄이면 원본 이미지에 손상이 가는 것이 특징이며, 우리는 흔히 이것을 '이미지가 깨졌다'라고 표현합니다.
'Win32 API > 강의들 ft. Assortrock' 카테고리의 다른 글
07_TransparentBlt,Component (0) | 2022.11.17 |
---|---|
06_Resources (0) | 2022.11.17 |
04_Input (0) | 2022.11.17 |
03_SceneManager (0) | 2022.11.17 |
02. FrameWork (2) | 2022.11.17 |