def set_current(self): if not self.canvas: raise RuntimeError('Canvas has not been attached') # XXX not per-thread gl.current_context = self # XXX gl_info.set_active_context() glu_info.set_active_context() # Implement workarounds if not self._info: self._info = gl_info.GLInfo() self._info.set_active_context() for attr, check in self._workaround_checks: setattr(self, attr, check(self._info)) # Release textures on this context scheduled for deletion if self.object_space._doomed_textures: textures = self.object_space._doomed_textures textures = (gl.GLuint * len(textures))(*textures) gl.glDeleteTextures(len(textures), textures) self.object_space._doomed_textures = [] # Release buffers on this context scheduled for deletion if self.object_space._doomed_buffers: buffers = self.object_space._doomed_buffers buffers = (gl.GLuint * len(buffers))(*buffers) gl.glDeleteBuffers(len(buffers), buffers) self.object_space._doomed_buffers = []
def delete_buffer(self, buffer_id): '''Safely delete a buffer object belonging to this context. This method behaves similarly to `delete_texture`, though for ``glDeleteBuffers`` instead of ``glDeleteTextures``. :Parameters: `buffer_id` : int The OpenGL name of the buffer to delete. :since: fos.lib.pyglet 1.1 ''' if self.object_space is gl.current_context.object_space and False: id = gl.GLuint(buffer_id) gl.glDeleteBuffers(1, id) else: self.object_space._doomed_buffers.append(buffer_id)