Правильный метод для этого - вызывать GraphicsDevice.Present()
всякий раз, когда вы хотите нарисовать задний буфер на экране.
Теперь трудность заключается в том, что класс Game
автоматически вызывает для вас Present (в частности, в Game.EndDraw
), а вы этого не хотите. К счастью, Game
предоставляет несколько способов предотвратить вызов Present:
Лучшим способом было бы переопределить BeginDraw
и заставить его возвращать значение false, чтобы предотвратить рисование кадра (включая предотвращение вызова Draw
и EndDraw
), например:
protected override bool BeginDraw()
{
if(readyToDraw)
return base.BeginDraw();
else
return false;
}
Другие альтернативы - вызвать Game.SuppressDraw
или переопределить EndDraw
так, чтобы он не вызывал base.EndDraw()
, пока вы не будете готовы отобразить кадр на экране.
Лично я бы просто рисовал каждый кадр.