A Sync() will call Update(), Render() and Swap() in that order.
You can call any of those three independently, before the Sync() call (or instead of).
Update(time) updates all objects based on the given time, animation, physics, etc. in back buffer. If passed time=zero, it calls StepPhysics with the actual frame time (unless you've already called StepPhysics in the current frame).
Render() draws all sprites and text objects to the back buffer.
Swap() swaps the the screen and the back buffer and updates global time variables.
So, you can do all sorts of display changes and they don't appear to the user until you either call Sync() or Swap().
But you can also do all sorts of display changes and call Render() and they will be in the back buffer and not displayed until the next Swap() or Sync() call.
I believe the commands that copy the display (scissor commands and such) work with the back buffer.
Cheers,
Ancient Lady
AGK Community Tester and AppGameKit Master