Esempio n. 1
0
    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()

        if not self._info:
            self._info = gl_info.GLInfo()
            self._info.set_active_context()

        # Release Textures, Buffers, and VAOs on this context scheduled for
        # deletion. Note that the garbage collector may introduce a race
        # condition, so operate on a copy, and clear the list afterwards.
        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.clear()
        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.clear()
        if self.object_space.doomed_vaos:
            vaos = self.object_space.doomed_vaos[:]
            vaos = (gl.GLuint * len(vaos))(*vaos)
            gl.glDeleteVertexArrays(len(vaos), vaos)
            self.object_space.doomed_vaos.clear()
Esempio n. 2
0
    def release(vao):
        # If we have no context, then we are shutting down, so skip this
        if gl.current_context is None:
            return

        if vao.value != 0:
            gl.glDeleteVertexArrays(1, byref(vao))
            vao.value = 0
Esempio n. 3
0
def deleteVAO(vao):
    """Delete a Vertex Array Object (VAO). This does not delete array buffers
    bound to the VAO.

    Returns
    -------
    :obj:`None'

    """
    GL.glDeleteVertexArrays(1, vao.id)
Esempio n. 4
0
    def release(ctx: "Context", glo: gl.GLuint):
        """
        Delete this object.
        This is automatically called when this object is garbage collected.
        """
        # If we have no context, then we are shutting down, so skip this
        if gl.current_context is None:
            return

        if glo.value != 0:
            gl.glDeleteVertexArrays(1, byref(glo))
            glo.value = 0

        ctx.stats.decr("vertex_array")
Esempio n. 5
0
    def _invalidate_device_objects(self):
        if self._vao_handle.value > -1:
            gl.glDeleteVertexArrays(1, byref(self._vao_handle))
        if self._vbo_handle.value > -1:
            gl.glDeleteBuffers(1, byref(self._vbo_handle))
        if self._elements_handle.value > -1:
            gl.glDeleteBuffers(1, byref(self._elements_handle))
        self._vao_handle = self._vbo_handle = self._elements_handle = 0

        gl.glDeleteProgram(self._shader_handle)
        self._shader_handle = 0

        if self._font_texture.value > -1:
            gl.glDeleteTextures(1, byref(self._font_texture))
        self.io.fonts.texture_id = 0
        self._font_texture = 0
Esempio n. 6
0
    def delete_vao(self, vao_id):
        """Safely delete a Vertex Array Object belonging to this context.

        This method behaves similarly to `delete_texture`, though for
        ``glDeleteVertexArrays`` instead of ``glDeleteTextures``.

        :Parameters:
            `vao_id` : int
                The OpenGL name of the Vertex Array to delete.

        .. versionadded:: 2.0
        """
        if gl.current_context and self.object_space is gl.current_context.object_space and False:
            v_id = gl.GLuint(vao_id)
            gl.glDeleteVertexArrays(1, v_id)
        else:
            self.object_space.doomed_vaos.append(vao_id)
Esempio n. 7
0
 def __del__(self):
     try:
         glDeleteVertexArrays(1, self._id)
     # Python interpreter is shutting down:
     except ImportError:
         pass
Esempio n. 8
0
 def delete(self):
     glDeleteVertexArrays(1, self._id)
Esempio n. 9
0
 def delete(self):
     try:
         glDeleteVertexArrays(1, self._id)
     except Exception:
         pass
Esempio n. 10
0
 def delete(self):
     gl.glDeleteVertexArrays(1, (c_uint * 1)(self.name))
Esempio n. 11
0
	def __del__(self):
		gl.glDeleteQueries(1, self.occlusion_query)
		gl.glDeleteBuffers(1, self.vbo)
		gl.glDeleteVertexArrays(1, self.vao)
Esempio n. 12
0
 def on_key_press(self, sym, mod):
     if sym == key.ESCAPE:
         del self.shader
         del self.suzanne
         glDeleteVertexArrays(1, self.vao)
         self.close()
Esempio n. 13
0
 def __del__(self):
     if self.__value is not None:
         buf = ct.c_uint()
         buf.value = self.__value
         gl.glDeleteVertexArrays(1, ct.byref(buf))