void CMainGame::Render() { HBITMAP m_hBitMap, m_hOldBitMap; HDC m_hMemDC = CreateCompatibleDC(m_hdc); m_hBitMap = CreateCompatibleBitmap(m_hdc, SCREEN_WIDTH, SCREEN_HEIGHT); m_hOldBitMap = (HBITMAP)SelectObject(m_hMemDC, m_hBitMap); RECT rt = { 0,0,SCREEN_WIDTH, SCREEN_HEIGHT }; FillRect(m_hMemDC, &rt, (HBRUSH)COLOR_WINDOWFRAME); CSceneManager::GetInstance()->Render(m_hMemDC); BitBlt(m_hdc, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, m_hMemDC, 0, 0, SRCCOPY); DeleteObject(SelectObject(m_hMemDC, m_hOldBitMap)); DeleteDC(m_hMemDC); }
그리는 함수를 호출할때마다, 화면에 직접 그리냐.
한꺼번에 메모리에 그려놓고, 다 그린놈을 그대로 화면으로 옮기냐 (복사) 차이.
매번 그릴 대상을 직접 화면에 하나씩 그려나가니 당연히 깜빡이는거고,
한꺼번에 메모리에 그려놓고, 메모리에 있는 내용 전부를 한번에 화면으로 옮기니 안깜빡이는거구나.
원리는 간단하네.
'개발 일지 > 메이플 스토리' 카테고리의 다른 글
메이플 스토리 개발 내용 및 회고 (0) | 2018.07.02 |
---|---|
메이플스토리 개발 (0) | 2017.12.11 |
벡터 , 삼각함수 덧셈정리 (0) | 2017.12.02 |
winapi 공부중 (hInstance랑 hWnd차이, GetDC랑 beginPaint차이 (0) | 2017.11.23 |