Please nominate your Qt Champions for 2021!

How can I render to fbo out of QGLWidget::PaintGl

  • Hi,

    I use QGLWidget for my game. I want to render my background into a fbo so that I don't need to repaint them every PaintGL call.
    My game update is called by a QTimer. After the update function I call QGLWidget::updateGL for repaint.
    My render code is mostly directly call gl functions without using QPaint.

    In my test run, if I put render to fbo codes in PaintGL function, it works. However if I move them to my update function, the result is weird: A "blank" thing (which should be the quad that contains the fbo texture) covers all previous rendered objects. The "blank" thing remains the same glClear color.

    Should I always put any render code, even not directly to the screen, within PaintGL function?

    All in 2D without depth.

    P.S. If I put updateGL() before my game update function, the result is correct. But is there a safer and better way to do this?

Log in to reply