func stop() { gl.DeleteProgram(glimage.program) gl.DeleteBuffer(glimage.quadXY) gl.DeleteBuffer(glimage.quadUV) texmap.Lock() for _, t := range texmap.texs { if t.gltex.Value != 0 { gl.DeleteTexture(t.gltex) } t.gltex = gl.Texture{} } texmap.Unlock() }
// init creates an underlying GL texture for a key. // Must be called with a valid GL context. // Must hold tm.Mutex before calling. func (tm *texmapCache) init(key texmapKey) { tex := tm.texs[key] if tex.gltex.Value != 0 { panic(fmt.Sprintf("attempting to init key (%v) with valid texture", key)) } tex.gltex = gl.CreateTexture() gl.BindTexture(gl.TEXTURE_2D, tex.gltex) gl.TexImage2D(gl.TEXTURE_2D, 0, tex.width, tex.height, gl.RGBA, gl.UNSIGNED_BYTE, nil) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE) for _, t := range tm.toDelete { gl.DeleteTexture(t) } tm.toDelete = nil }
func (t *textureImpl) Release() { gl.DeleteTexture(t.id) t.id = gl.Texture{} }
func (e *Engine) Stop() { gl.DeleteProgram(e.shader.program) gl.DeleteBuffer(e.shape.buf) gl.DeleteTexture(e.shape.texture) }