본문 바로가기

Win32 api

Win32 api 강의 12화.

- 더블 버퍼링

// 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