gamnit :: DynamicContext :: prepare_once
# Prepare all attributes once per resolution change
fun prepare_once(display: GamnitDisplay, max_dynamic_resolution_ratio: Float)
do
# TODO enable antialiasing.
# Framebuffer
var framebuffer = glGenFramebuffers(1).first
glBindFramebuffer(gl_FRAMEBUFFER, framebuffer)
assert glIsFramebuffer(framebuffer)
self.dynamic_framebuffer = framebuffer
assert glGetError == gl_NO_ERROR
# Depth & texture/color
var depthbuffer = glGenRenderbuffers(1).first
self.depth_renderbuffer = depthbuffer
var texture = glGenTextures(1).first
self.texture = texture
assert glGetError == gl_NO_ERROR
resize(display, max_dynamic_resolution_ratio)
assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE
# Array buffer
buffer_array = glGenBuffers(1).first
glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
assert glIsBuffer(buffer_array)
assert glGetError == gl_NO_ERROR
## coord
var data = new Array[Float]
data.add_all([-1.0, -1.0, 0.0,
1.0, -1.0, 0.0,
-1.0, 1.0, 0.0,
1.0, 1.0, 0.0])
## tex_coord
data.add_all([0.0, 0.0,
1.0, 0.0,
0.0, 1.0,
1.0, 1.0])
var c_data = new GLfloatArray.from(data)
glBufferData(gl_ARRAY_BUFFER, data.length*4, c_data.native_array, gl_STATIC_DRAW)
glBindBuffer(gl_ARRAY_BUFFER, 0)
assert glGetError == gl_NO_ERROR
end
lib/gamnit/dynamic_resolution.nit:202,2--247,4