- 더블 버퍼링
// CCore.h
class CCore
{
...
HBITMAP m_hBitBack; // Back Buffer
HDC m_hDCBack; // Back Buffer용 DC
...
};
Back buffer 용 비트맵과 Device context 를 만들어줌.
int CCore::init(HWND _hWnd, POINT _ptResolution)
{
...
// 이중 버퍼링을 위한 Back Buffer 생성.
m_hBitBack = CreateCompatibleBitmap(m_hDC, m_ptResolution.x, m_ptResolution.y);
m_hDCBack = CreateCompatibleDC(m_hDC);
// DC 가 처음 생성되면 기본 비트맵이 선택되어 있음.
// 기본 비트맵을 반환하고, 우리가 만든 비트맵을 선택.
// 새로 만든 dc 와 비트맵을 연결하는 과정임.
HBITMAP hDefaultBit = (HBITMAP)SelectObject(m_hDCBack, m_hBitBack);
DeleteObject(hDefaultBit);
...
return S_OK;
}
더블 버퍼링은 간단히 말해서 그리는 판을 2개를 만들고
1개의 판에서 그리고 있다가, 1 프레임이 완성되면 다른 판으로 복붙을 하는 것.
이렇게 하면 1개에 그릴 때와는 달리
그리는 과정이 화면에 나오지 않으므로 깜빡거리는 현상을 없앨 수 있음.
'Win32 api' 카테고리의 다른 글
| Win32 api 15 - 16화. (0) | 2025.09.14 |
|---|---|
| Win32 api 강의 13 - 14화. (0) | 2025.09.14 |
| Win32 api 강의 11화. (0) | 2025.09.13 |
| Win32 api 강의 10화. (0) | 2025.09.12 |
| Win32 api 강의 9화. (0) | 2025.09.12 |