- optimisation: upload buffer to gpu only once a frame