1 RenderEngine:run("inputhandler")
2 RenderEngine:run("shaders")
3 RenderEngine:run("textures")
4 RenderEngine:run("window")
6 RenderEngine.cube_vertices = RenderEngine:run("cube_vertices")
7 RenderEngine.Mesh = RenderEngine:run("mesh")
8 RenderEngine.ChunkMesh = RenderEngine:run("chunk_mesh")
9 RenderEngine.camera = RenderEngine:run("camera")
11 function RenderEngine:init()
16 self:set_sky("#FFFFFF")
17 self:add_render_task()
20 function RenderEngine:init_glew()
24 function RenderEngine:add_render_task()
25 Dragonblocks:add_task(function()
30 function RenderEngine:render_loop(is_only_task)
31 self.last_time = glfw.get_time()
34 if not is_only_task then
37 until glfw.window_should_close(self.window)
41 function RenderEngine:update_projection_matrix()
42 gl.uniform_matrix4f(gl.get_uniform_location(self.shaders, "projection"), true, glm.perspective(math.rad(self.fov), self.window_width / self.window_height, 0.0001, 100))
45 function RenderEngine:update_view_matrix()
46 gl.uniform_matrix4f(gl.get_uniform_location(self.shaders, "view"), true, self.camera:get_view_matrix())
49 function RenderEngine:render()
50 local dtime = glfw.get_time() - self.last_time
51 self.last_time = glfw.get_time()
53 self:process_input(dtime)
55 gl.clear_color(self.sky)
56 gl.enable("depth test")
57 gl.clear("color", "depth")
59 gl.use_program(self.shaders)
61 self:update_view_matrix()
63 for _, mesh in ipairs(self.Mesh.list) do
67 glfw.swap_buffers(self.window)
71 function RenderEngine:set_sky(htmlcolor)
72 local r, g, b = hex2rgb(htmlcolor)
73 self.sky = {r, g, b, 1.0}
76 function RenderEngine:set_wireframe(v)
77 gl.polygon_mode("front and back", (v and "line" or "fill"))