Understanding Double Buffering

Written by Various on May 30 2018

Why do we need to Refresh Screen?

Double Buffering

SplashKit uses a technique called Double Buffering to ensure you have control over how things appear on the screen. In this technique you draw to a background canvas and then call Refresh Screen to make that canvas appear to the user.

This means you control when something appears on the screen which is important when coordinating a number of shapes, sprites, images or text.

The four images below execute the following pseudo code.

call Fill  Triangle() 
call Fill  Rectangle() 
call Fill  Circle() 
call Refresh Screen() 

Visualisation of the pseudocode running.

The Painter Model

Drawing shapes, sprites or other devices into a window is similar to an artist painting on a canvas. Once a brush stroke has been applied, you cannot insert anything underneath it. To insert a shape, sprite, image or text you will need to clear the screen and redraw the items in to the order you need them to render. As discussed above, it is important to note that SplashKit executes the commands top -> down. However they are displayed bottom up. Take a look at the images below and the pseudo code. They will give you a better understanding of the Painter Model.

Code is top down, appearance is bottom up.

So when drawing you need to keep two things in mind:

  1. Anything you draw will not appear unit you have refreshed the screen
  2. Newer drawing operations will draw over the current canvas, on top of anything that was already there