Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


DDRAW: prim/back-flip shaking! I need smooth scrolling.

This topic is 6865 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hmmm, does it look like things are sorta, transparent?

It *sounds* like your not giving it enough time to draw everything before you flip the surfaces, however looking at your code, it looks like you wait for everything to finish, so I'm not sure. I guesse it would depend on what you have inside of the DrawAll function... Good luck!

Share this post

Link to post
Share on other sites
Guest Anonymous Poster
The only thing I would change would be this line:

ddrval = lpDDSPrimary->Flip(NULL,0)

try using

ddrval = lpDDSPrimary->Flip(NULL,DDFLIP_WAIT)

but your surface must specify these flags:
I'm sure you have the both flagged because you are using the Primary surface in your code, and the flip function seems to be working currently.

Share this post

Link to post
Share on other sites
Thanks but.. still not working
I tried all your suggestions with no luck. Wasn't sure thought where that directdrawobject->WaitForVerticalBlank(DDWAITVB_BLOCKEND, 0); should be placed so I tried putting it everywhere.. Still didn't look any better.

Yes you fiqured my problem right: it seems like I have *four* 25% transparent pictures on my screen. One is the current frame and the other three are the last three frames.
Yes they are so noticeable I could count how many there were.

And the problem is not in drawAll() because it just draws it all...

Someone here must have succeeded in making a smooth scroller! Please tell me what should I do.

Share this post

Link to post
Share on other sites
"the program would flip before drawing is actually complete"

"And the problem is not in drawAll() because it just draws it all... "

In drawAll(), I assume you're using BltFast? Are you using the DDBLTFAST_WAIT flag with it?

btw- WaitForVerticalBlank should be called before the flip. You could try the WaitForSync method, but I think Vore is correct in thinking that your problem is in your DrawAll function.

good luck,


Share this post

Link to post
Share on other sites
I copied some code from ddex3 and did a scrolling screen to my game. But when fps's get low, the picture starts to shake! It only shakes when I move the view, not when I stay still. And shaking is little, but annoying. Well.. here's some code. drawAll() draws the level to the lpsurface:
ddsd.dwSize = sizeof(ddsd);

do {
} while (result == DDERR_SURFACEBUSY | | result == DDERR_WASSTILLDRAWING);

if (result != DD_OK) return;


// Flip the surfaces (this is from ddex3)
while( 1 )
ddrval = lpDDSPrimary->Flip( NULL, 0 );
if( ddrval == DD_OK ) {break;}
if( ddrval == DDERR_SURFACELOST )
ddrval = restoreAll(); if( ddrval != DD_OK ) {break;}
I don't use any blits yet, only my own slow code to draw things in drawAll().

The shaking actually looks like .. the program would flip before drawing is actually complete. Or it skips the drawing every second frame. But my code doesn't allow this to happen. Or does it? I don't know about Window's evil tricks yet...

And if fps's are high, the shaking disappears!

Any ideas about this shaking screen problem?
Anybody here with a smooth scroller?

Thanks already.

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!