def __del__(self): self.log.info('[%s] CustomDrawData.__del__() [%s]' % (time.asctime(), self)) bgl.glDeleteBuffers(2, self.vertex_buffer) bgl.glDeleteVertexArrays(1, self.vertex_array) bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0) bgl.glDeleteTextures(1, self.texture)
def process_draw(self) -> None: width = bge.render.getWindowWidth() height = bge.render.getWindowHeight() self._resolution.on_next(Dimension(width, height)) super().process_draw() data = self.surface.get_data() source = bgl.Buffer(bgl.GL_BYTE, width * height * 4, data) bgl.glEnable(bgl.GL_BLEND) bgl.glActiveTexture(bgl.GL_TEXTURE0) # noinspection PyUnresolvedReferences bgl.glBindTexture(bgl.GL_TEXTURE_2D, self.texture[0]) bgl.glTexImage2D(bgl.GL_TEXTURE_2D, 0, bgl.GL_SRGB_ALPHA, width, height, 0, bgl.GL_BGRA, bgl.GL_UNSIGNED_BYTE, source) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) self.shader.bind() self.shader.uniform_int("image", 0) self.batch.draw(self.shader) bgl.glDeleteBuffers(1, source)
def __del__(self): log('CustomDrawData.__del__()') bgl.glDeleteBuffers(2, self.vertex_buffer) bgl.glDeleteVertexArrays(1, self.vertex_array) bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0) bgl.glDeleteTextures(1, self.texture)
def close(self): if not self.initialized: return bgl.glDeleteBuffers(2, self.vertex_buffer) bgl.glDeleteVertexArrays(1, self.vertex_array) bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0) bgl.glDeleteTextures(1, self.texture)
def _draw_texture(texture_id, x, y, width, height): # INITIALIZATION # Getting shader program shader_program = bgl.Buffer(bgl.GL_INT, 1) bgl.glGetIntegerv(bgl.GL_CURRENT_PROGRAM, shader_program) # Generate vertex array vertex_array = bgl.Buffer(bgl.GL_INT, 1) bgl.glGenVertexArrays(1, vertex_array) texturecoord_location = bgl.glGetAttribLocation( shader_program[0], "texCoord") position_location = bgl.glGetAttribLocation(shader_program[0], "pos") # Generate geometry buffers for drawing textured quad position = [x, y, x + width, y, x + width, y + height, x, y + height] position = bgl.Buffer(bgl.GL_FLOAT, len(position), position) texcoord = [0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0] texcoord = bgl.Buffer(bgl.GL_FLOAT, len(texcoord), texcoord) vertex_buffer = bgl.Buffer(bgl.GL_INT, 2) bgl.glGenBuffers(2, vertex_buffer) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, vertex_buffer[0]) bgl.glBufferData(bgl.GL_ARRAY_BUFFER, 32, position, bgl.GL_STATIC_DRAW) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, vertex_buffer[1]) bgl.glBufferData(bgl.GL_ARRAY_BUFFER, 32, texcoord, bgl.GL_STATIC_DRAW) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, 0) # DRAWING bgl.glActiveTexture(bgl.GL_TEXTURE0) bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture_id) bgl.glBindVertexArray(vertex_array[0]) bgl.glEnableVertexAttribArray(texturecoord_location) bgl.glEnableVertexAttribArray(position_location) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, vertex_buffer[0]) bgl.glVertexAttribPointer(position_location, 2, bgl.GL_FLOAT, bgl.GL_FALSE, 0, None) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, vertex_buffer[1]) bgl.glVertexAttribPointer(texturecoord_location, 2, bgl.GL_FLOAT, bgl.GL_FALSE, 0, None) bgl.glBindBuffer(bgl.GL_ARRAY_BUFFER, 0) bgl.glDrawArrays(bgl.GL_TRIANGLE_FAN, 0, 4) bgl.glBindVertexArray(0) bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0) # DELETING bgl.glDeleteBuffers(2, vertex_buffer) bgl.glDeleteVertexArrays(1, vertex_array)
def dispose(self) -> None: if self._draw_handler: # noinspection PyArgumentList SpaceView3D.draw_handler_remove(self._draw_handler, "WINDOW") else: bge.logic.getCurrentScene().post_draw.remove(self.process) bgl.glDeleteTextures(1, self.texture) # noinspection PyTypeChecker bgl.glDeleteBuffers(1, self.texture) super().dispose()
def __del__(self): del self._NULL if self.vbo_segs_co: bgl.glDeleteBuffers(1, self.vbo_segs_co) bgl.glDeleteBuffers(1, self.vbo_segs) if self.vbo_origin_co: bgl.glDeleteBuffers(1, self.vbo_origin_co) bgl.glDeleteBuffers(1, self.vbo_origin) bgl.glDeleteVertexArrays(1, self.vao)
def delfb(self): buf = bgl.Buffer(bgl.GL_INT, 1) if self.vtx_buf is not None: bgl.glDeleteBuffers(2, self.vtx_buf) self.vtx_buf = None if self.vao is not None: buf[0] = self.vao bgl.glDeleteVertexArrays(1, buf) self.vao = None if self.tex is not None: buf[0] = self.tex bgl.glDeleteTextures(1, buf) self.tex = None if self.depth is not None: buf[0] = self.depth bgl.glDeleteRenderbuffers(1, buf) self.depth = None if self.fb is not None: buf[0] = self.fb bgl.glDeleteFramebuffers(1, buf) self.fb = None
def __del__(self): if self.vbo_tris: bgl.glDeleteBuffers(1, self.vbo_tris) bgl.glDeleteBuffers(1, self.vbo_tri_indices) del self.tri_verts if self.vbo_edges: bgl.glDeleteBuffers(1, self.vbo_edges) bgl.glDeleteBuffers(1, self.vbo_edge_indices) del self.edge_verts if self.vbo_verts: bgl.glDeleteBuffers(1, self.vbo_verts) bgl.glDeleteBuffers(1, self.vbo_looseverts_indices) del self.looseverts bgl.glDeleteVertexArrays(1, self.vao)
def __del__(self): bgl.glDeleteBuffers(2, self.vertex_buffer) bgl.glDeleteVertexArrays(1, self.vertex_array) bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0) bgl.glDeleteTextures(1, self.texture)
def __del__(self): del self._NULL if self.vbo_tris: bgl.glDeleteBuffers(1, self.vbo_tris) bgl.glDeleteBuffers(1, self.vbo_tri_indices) del self.tri_verts if self.vbo_edges: bgl.glDeleteBuffers(1, self.vbo_edges) bgl.glDeleteBuffers(1, self.vbo_edge_indices) del self.edge_verts if self.vbo_verts: bgl.glDeleteBuffers(1, self.vbo_verts) bgl.glDeleteBuffers(1, self.vbo_looseverts_indices) del self.looseverts bgl.glDeleteVertexArrays(1, self.vao)
def __del__(self): bgl.glDeleteBuffers(4, self.vbos) del self.vbos