OpenGL C++ generic wrapper