Important: Please read the Qt Code of Conduct -

grabFramebuffer() of QGLWidget not working with nvidia

  • Hi I'm using grabFramebuffer() in my QGLWidget class to get a screenshot of my QGLWidget. It works fine on all systems I've got, but since moving to a NVIDIA card it does not work as expected. My QGLWidget is updated in the background (off screen rendering) and this does not seem to be represented in the grabFramebuffer() call on this particular nvidia card. I have to actually active the QGLWidget and have it print something on the screen for the grabFramebuffer() call to work. Does anyone have any experience with such a scenario? I have tried to explicitly activate the framebuffer with makeCurrent() but it does not help. It only ever returns me that last visible screen but not the stuff that has been rendered off screen. Other cards do that. Is there any alternative to the grabFramebuffer() function?

  • No one got any ideas?

  • Lifetime Qt Champion


    That might be a nVidia driver bug. You should also specify which platform, driver version, nVidia card you are using.

  • The card is the following device:

    VGA compatible controller: NVIDIA Corporation GK107GLM [Quadro K1100M] (rev a1)

    I'm using a 3.19 Linux kernel (hardened Gentoo).

    The nvidia driver I'm using is version 352.21.

  • Lifetime Qt Champion

    Can you test your application on a machine that has a different nVidia card ?

Log in to reply