DirectDraw flipping

Started by
-1 comments, last by cb007sax 21 years, 6 months ago
I''m having trouble with flipping for some reason. Instead of taking the back buffer and flipping it onto the primary, it seems to show my window, then it shows the back buffer, then back to the window. So it''s like everytime, i see my window screen, then i flip and see the back buffer, then i flip and see my window screen, etc. It should be flipping the back buffer up to the screen every time. I''m not sure what''s wrong, instead of putting the back buffer to the screen it like swaps the back buffer and the window. When i say window, i mean the white application window. Here is my init code bool DD_OBJ::Init() { LPDIRECTDRAW temp_lpdd = NULL; if(FAILED(DirectDrawCreateEx(0, (void**)&lpdd, IID_IDirectDraw7, 0))) return false; if(FAILED(lpdd->SetCooperativeLevel(MainWindow.hwnd,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT))) return false; if(FAILED(lpdd->SetDisplayMode(800,600,32,0,0))) return false; // Initiate Surfaces DDSURFACEDESC2 surfaceDesc = {0}; ZeroMemory(&surfaceDesc, sizeof(surfaceDesc)); surfaceDesc.dwSize = sizeof(DDSURFACEDESC2); surfaceDesc.dwFlags = DDSD_BACKBUFFERCOUNT | DDSD_CAPS; surfaceDesc.dwBackBufferCount = 1; surfaceDesc.ddsCaps.dwCaps = DDSCAPS_COMPLEX | DDSCAPS_FLIP | DDSCAPS_PRIMARYSURFACE; if(FAILED(lpdd->CreateSurface(&surfaceDesc,&primarySurface,NULL))) { return false; } surfaceDesc.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; if(FAILED(primarySurface->GetAttachedSurface(&(surfaceDesc.ddsCaps),&backSurface))) return false; HDC bSurfDC = NULL; backSurface->GetDC(&bSurfDC); RECT rect = {0,0,800,600}; FillRect(bSurfDC,&rect,(HBRUSH)GetStockObject(BLACK_BRUSH)); backSurface->ReleaseDC(bSurfDC); return true; } and my flip code is void DD_OBJ::Draw() { lpdd->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, 0); primarySurface->Flip(NULL, DDFLIP_WAIT); } If anyone can help, ill be very appreciative

This topic is closed to new replies.

Advertisement