gamnit :: SpriteContext :: resize
buffer_array
and buffer_element
to fit all sprites
(and more)
# Resize `buffer_array` and `buffer_element` to fit all `sprites` (and more)
fun resize
do
app.perf_clock_sprites.lapse
# Allocate a bit more space
var capacity = (sprites.capacity.to_f * resize_ratio).to_i
var array_bytes = capacity * bytes_per_sprite
glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
assert glIsBuffer(buffer_array)
glBufferData(gl_ARRAY_BUFFER, array_bytes, new Pointer.nul, usage)
assert glGetError == gl_NO_ERROR
# GL_TRIANGLES 6 vertices * sprite
var n_indices = capacity * indices_per_sprite
var ius = 2 # sizeof(GL_UNSIGNED_SHORT)
var element_bytes = n_indices * ius
glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element)
assert glIsBuffer(buffer_element)
glBufferData(gl_ELEMENT_ARRAY_BUFFER, element_bytes, new Pointer.nul, usage)
assert glGetError == gl_NO_ERROR
buffer_capacity = capacity
sys.perfs["gamnit flat gpu resize"].add app.perf_clock_sprites.lapse
end
lib/gamnit/flat/flat_core.nit:1140,2--1166,4