I saw a lot of questions how to use OpenGL with shaders and QPainter
in parallel on a QOpenGLWidget
. For example Example 1, Example 2 and Example 3.
I experienced that there are very many problems, when QPainter, native OpenGL code and shaders are used. Sometimes only the QPainter stuff gets rendered, sometimes only stuff stored in VertexArrayObjects gets rendered or stuff used the "old way" setting vertices with glVertex()
gets rendered.
I managed to build a very small solution, which only modifies the usage of QPainter
to use every 3 drawing methods in parallel.
The result is, that you can use the QPainter
and the shader everywhere in your paintGL()
-pipeline of QOpenGLWidget
, where you want, without modifying everytime your OpenGL states or start and end nativePainting with your QPainter
.