본문 바로가기

Cpp

더블 버퍼링

그래픽 객체에 이미지를 그릴 때 사용하는 기법이다.

더블 버퍼링이란 싱글 버퍼링으로 화면을 그릴 경우 데이터를 저장하는 동안에는 다음 그림의 데이터를 전송할 수 없기 때문에 지우고 그리고 지우고를 반복 할 경우 필연적으로 발생하는 깜빡임 등의 상황을 막기 위해서 사용되는 기법입니다. 

 

API를 시작하다보면 비트맵 이미지를 사용하게 된다. 그 때 이미지들이 전환되면서 영상처럼 부드럽게 움직일 거라 생각하지만 실제로 이미지들이 움직일 때마다 화면이 깜빡이는 현상이 눈에 들어온다. 쉽게 말하자면 아래와 같은 상황인 것이다.

 

▶ 게임 캐릭터이미지를 구현할 때 이미지를 움직이게 하고 싶다.

그러나 캐릭터가 띄엄띄엄 움직임과 동시에 깜빡거리는 화면

때문에 게임할 맛이 안난다.

 

그 이유는 컴퓨터가 이미지를 지웠다가 새 이미지를 다시 그리고 하는 방식을 반복하기 때문이다.

 

즉, 이미지를 그리는 데 시간이 소요되므로 이미지의 출력이 잦을수록 깜빡거리는 현상이 심해진다.

 

이에 대한 해결방안으로 버퍼 역할을 해줄 메모리 장치 컨텍스트(보이지 않는 화면)를 하나 더 사용하여 그곳에 이미지를 그리고, 기존화면을 유지하다가 이미지가 완성되면 실제 화면 장치 컨텍스트로 한꺼번에 베껴 그리는 것이다.

 

 

출처 : 

https://coding-factory.tistory.com/692

 

[C언어/C++] 화면 깜빡임 없애기 (더블 버퍼링)

콘솔로 개발을 진행할때 화면을 모두 지우고 재출력을 해야하는 상황에서 대개 while문 안에 system("cls") 명령어를 많이 사용하는데 콘솔의 내용을 지우고 다시 쓰고 하는 과정에서 정신산만한 깜

coding-factory.tistory.com

https://movefast.tistory.com/6

 

Double Buffering - 더블 버퍼링 기법

더블 버퍼링(Double Buffering)은 이중 버퍼링이라 불리기도 하며, 그래픽 객체에 이미지를 그릴 때 사용되는 기법이다. Q) 왜 사용하는가 ? A) API를 시작하다보면 비트맵 이미지를 사용하게 된다. 그

movefast.tistory.com

 

'Cpp' 카테고리의 다른 글

deque(double ended queue)  (0) 2023.04.10
비트 연산자  (0) 2023.02.28
인터페이스  (0) 2023.02.27
추상클래스  (0) 2023.02.27
외부링크 내부링크  (0) 2023.02.23