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
def clean_up
glDeleteFramebuffers(@framebuffer)
glDeleteFramebuffers(1, [@framebuffer].pack("L"))
@textures.values.each do |id|
glDeleteTextures(id)
end
glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
glDeleteBuffers(@positions_buffer_id)
glDeleteBuffers(@uvs_buffer_id)
glDeleteVertexArrays(@screen_vbo)
glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
gl_error?
end
end
end

View File

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

View File

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

View File

@@ -27,6 +27,8 @@ class IMICFPS
@renderer.preload_default_shaders
@scene = TurnTableScene.new
@canvas_size = Vector.new(self.width, self.height)
at_exit do
@config.save!
end
@@ -45,6 +47,12 @@ class IMICFPS
@console.draw if @show_console
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
def draw_cursor