An OpenGL Abstraction layer