Wanneer ik in een fullscreen DirectDraw applicatie de Flip() functie gebruik om de backbuffer naar het scherm te toveren werkt dat prima. Maar in een windowed applicatie kan ik Flip() niet gebruiken en moet ik Blt() gebruiken om de hele backbuffer naar de client area van de window te blitten. Maar wanneer ik dat doe verloopt beweging heel schokkerig. Weet iemand hoe dit komt en hoe ik het kan oplossen?
Hier mijn flip functie:
Hier mijn flip functie:
Code:
void DDEngine::Flip()
{
//When fullscreen use DirectDraw's Flip() function
if(m_bFullscreen)
{
m_lpDDSPrimary->Flip(NULL, DDFLIP_WAIT);
}
else //Else we'll blit the backbuffer to the client rectangle of the window
{
RECT rcSource, rcDest;
POINT p;
p.x = 0; p.y = 0;
ClientToScreen(m_hWnd, &p);
GetClientRect(m_hWnd, &rcDest);
OffsetRect(&rcDest, p.x, p.y);
SetRect(&rcSource, 0, 0, m_nScreenWidth, m_nScreenHeight);
m_lpDDSPrimary->Blt(&rcDest, m_lpDDSBack, &rcSource, DDBLT_WAIT, NULL);
}
}