Cross platform OpenGL abstraction