Fun fact.. in the opengl/opengl_under_qml_fbo example, squircle.py. There is a typo that prevents the program from segfaulting, because it never runs the "createFramebufferObject" with an override. This code has "createFrameBufferObject", capital B, and this is never actually executed.
For others finding this issue, two fixes: (1) the fbo needs to be stored on the derived Renderer object before returning from the (2) createFramebufferObject method (lowercase b).
Fun fact.. in the opengl/opengl_under_qml_fbo example, squircle.py. There is a typo that prevents the program from segfaulting, because it never runs the "createFramebufferObject" with an override. This code has "createFrameBufferObject", capital B, and this is never actually executed.
https://github.com/Upcios/PyQtSamples/blob/master/PyQt5/opengl/opengl_under_qml_fbo/squircle.py#L17