render when the scene graph changes

use an atom and a watch that sends the scene to a channel
and a thread with the opengl context to receive the channel event
 and draw stuff
3 in glVertexAttribPointer is dimensions not length