add macro to get GL_FLOAT type
only bind attribute array once per frame

TODO probably premature optimisation.  benchmark