Added canvas_size_changed 'event' to Renderer and OpenGLRenderer

This commit is contained in:
2020-03-25 13:27:00 -05:00
parent 15e5d0a5e1
commit bb8e210362
4 changed files with 25 additions and 8 deletions

View File

@@ -151,15 +151,13 @@ class IMICFPS
end end
def clean_up def clean_up
glDeleteFramebuffers(@framebuffer) glDeleteFramebuffers(1, [@framebuffer].pack("L"))
@textures.values.each do |id| glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
glDeleteTextures(id)
end
glDeleteBuffers(@positions_buffer_id) glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
glDeleteBuffers(@uvs_buffer_id) glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
glDeleteVertexArrays(@screen_vbo) gl_error?
end end
end end
end end

View File

@@ -8,8 +8,15 @@ class IMICFPS
@g_buffer = GBuffer.new @g_buffer = GBuffer.new
end end
def canvas_size_changed
@g_buffer.unbind_framebuffer
@g_buffer.clean_up
@g_buffer = GBuffer.new
end
def render(camera, lights, entities) def render(camera, lights, entities)
if Shader.available?("default") if Shader.available?("default") && Shader.available?("render_screen")
@g_buffer.bind_for_writing @g_buffer.bind_for_writing
gl_error? gl_error?

View File

@@ -28,6 +28,10 @@ class IMICFPS
@opengl_renderer.render(camera, lights, entities) @opengl_renderer.render(camera, lights, entities)
end end
def canvas_size_changed
@opengl_renderer.canvas_size_changed
end
def finalize # cleanup def finalize # cleanup
end end
end end

View File

@@ -27,6 +27,8 @@ class IMICFPS
@renderer.preload_default_shaders @renderer.preload_default_shaders
@scene = TurnTableScene.new @scene = TurnTableScene.new
@canvas_size = Vector.new(self.width, self.height)
at_exit do at_exit do
@config.save! @config.save!
end end
@@ -45,6 +47,12 @@ class IMICFPS
@console.draw if @show_console @console.draw if @show_console
draw_cursor if needs_cursor draw_cursor if needs_cursor
_canvas_size = Vector.new(self.width, self.height)
if @canvas_size != _canvas_size
@renderer.canvas_size_changed
@canvas_size = _canvas_size
end
end end
def draw_cursor def draw_cursor