From aaed503326c8152caccdcc0efb23b6a618d1698e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Fri, 23 Jun 2017 00:08:39 -0400 Subject: [PATCH] gamnit: don't use `sprites_to_update` after a GPU buffer resize MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/gamnit/flat.nit | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/gamnit/flat.nit b/lib/gamnit/flat.nit index 85c702c..335bbd1 100644 --- a/lib/gamnit/flat.nit +++ b/lib/gamnit/flat.nit @@ -990,6 +990,7 @@ private class SpriteContext glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element) # Resize GPU buffers? + var update_everything = false if sprites.capacity > buffer_capacity then # Try to defragment first var moved = sprites.defragment @@ -999,6 +1000,7 @@ private class SpriteContext resize # We must update everything + update_everything = true for s in sprites.items do if s != null then sprites_to_update.add s else # Just update the moved sprites @@ -1012,10 +1014,17 @@ private class SpriteContext end # Update GPU sprites data - if sprites_to_update.not_empty then + if sprites_to_update.not_empty or update_everything then app.perf_clock_sprites.lapse - for sprite in sprites_to_update do update_sprite(sprite) + if update_everything then + for sprite in sprites.items do if sprite != null then + update_sprite(sprite) + end + else + for sprite in sprites_to_update do update_sprite(sprite) + end + sprites_to_update.clear last_sprite_to_update = null -- 1.7.9.5