local gl = honey.gl local module = {} setmetatable(module, {__index=_G}) setfenv(1, module) function Image(filename, params) local params = params or {} local data, width, height = honey.image.load(filename, 4) local self = {} self.width = width self.height = height self.texture = gl.GenTextures() gl.BindTexture(gl.TEXTURE_2D, self.texture) for param, value in pairs(params) do gl.TexParameteri(gl.TEXTURE_2D, gl[param], value) end gl.TexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data ) gl.GenerateMipmap(gl.TEXTURE_2D) honey.image.destroy(data) self.__gc = honey.util.gc_canary(function() gl.DeleteTextures(self.texture) end) return self end local cache = {} function loadImage(filename, params) if not cache[filename] then local img = Image(filename, params) cache[filename] = img return img end return cache[filename] end function clearImageCache() cache = {} end return module