The right way to do this is to call GraphicsDevice.Present() when you want to draw the back buffer on the screen.
Now the difficulty is that the Game class automatically calls Present for you (in particular, in Game.EndDraw ), which you do not want to do. Fortunately, Game provides several ways to prevent Present from being called:
A better way would be to override BeginDraw and return it false to prevent the frame from drawing (including preventing Draw and EndDraw from being called):
protected override bool BeginDraw() { if(readyToDraw) return base.BeginDraw(); else return false; }
Other alternatives are to call Game.SuppressDraw or override EndDraw so that it does not call base.EndDraw() until you are ready to display the frame on the screen.
Personally, I would just draw every frame.
Andrew Russell
source share