]> git.lizzy.rs Git - dragonblocks3d-lua.git/blob - modules/RenderEngine/src/textures.lua
Refactoring
[dragonblocks3d-lua.git] / modules / RenderEngine / src / textures.lua
1 function RenderEngine:init_texture_args()
2         local base_filter = (self.bilinear_filter and "linear" or "nearest")
3         local mipmap = (self.mipmap and " mipmap nearest" or "")
4         self.texture_min_filter = base_filter .. mipmap
5         self.texture_mag_filter = base_filter
6 end
7
8 function RenderEngine:create_texture(path)
9         local texture = gl.gen_textures(1)
10
11         gl.bind_texture("2d", texture)
12         gl.texture_parameter("2d", "min filter", self.texture_min_filter)
13         gl.texture_parameter("2d", "mag filter", self.texture_mag_filter)
14         gl.texture_parameter("2d", "wrap s", "repeat")
15         gl.texture_parameter("2d", "wrap t", "repeat")
16         
17         local data, width, height, channels = image.load(path)
18         
19         if not data then
20                 error("Failed to load texture '" .. path .. "'")
21         end
22         
23         gl.texture_image("2d", 0, "rgb", "rgba", "ubyte", data, width, height)
24         if self.mipmap then
25                 gl.generate_mipmap("2d")
26         end
27         
28         gl.unbind_texture("2d")
29         data, width, height, channels = nil
30         
31         return texture
32 end