object oriented opengl library