#211 glDeleteFramebuffersEXT Bug


The glDeleteFramebuffersEXT does not seem to work. The bug lead to an opengl "out of memory" error when allocating and disallocating a large number of fbos (~ 200 ).
In the attachement, a C++ version is included for comparison : the fbo id is recycled and then reused after glDeleteFramebuffersEXT is called, but not in the python version.
This is true for at least the 3.0.0 version .


  • Francois Lagunas

    C++ / python source code for comparison

  • Francois Lagunas

    My bad but ...
    You have to call the glDeleteFramebuffersEXT this way :

    fbo_id0, fbo_id1 = EXT.glGenFramebuffersEXT(1)

    glDeleteRenderbuffersEXT (1, numpy.array(fbo_id0))


    glDeleteRenderbuffersEXT (2, numpy.array([fbo_id0, fbo_id1]))

    and not

    glDeleteRenderbuffersEXT (1, [int(fbo_id)])

    which fails silently ...

    The doc is very sparse on the subject, and the fact that it fails silently is not very cool ...

  • Mike C. Fletcher

    • status: open --> closed-fixed
  • Mike C. Fletcher

    Running your original code on Linux AMD64 with the PyOpenGL bzr head, the code works and the IDs are recycled (that is, no silent failure observed). Wrappers have also been added so you can pass any of the raw uint, an array or the list as a single value to the delete operations. ARB version has been similarly wrapped.


Log in to post a comment.