Abstract GL calls
Added javascript backend