Currently each SceneObject inherits QOpenGLFunctions_3_3_Core, but this is wasteful. Try to refactor our current code to something like this: Renderer --------(Read)--------> SceneObject +---------- Render according to data from SceneObject.