elapsed_seconds = current_second - previous_second
    if elapsed_seconds > 1.0:
        previous_second = current_second
        fps = float(frame_count) / float(elapsed_seconds)
        glfw.SetWindowTitle(window, '%s @ FPS: %.2f' % (window_title, fps))
        frame_count = 0.0
    frame_count += 1.0

glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)
glDisable(GL_STENCIL_TEST)
glDisable(GL_BLEND)
glDisable(GL_CULL_FACE)
glClearColor(0.0, 0.0, 0.0, 0.0)

screen_shader = Shader('shader/screen_shader.vs', 'shader/screen_shader.frag')
screen_shader.compile(); screen_shader.use()

color_shader = Shader('shader/color_shader.vs', 'shader/color_shader.frag')
color_shader.compile(); color_shader.use()

raw_im = np.zeros((480,640,3), dtype=np.uint8)

def createFramebuffer(W, H, samples):
    tex = np.empty(3, dtype=np.uint32)
    if samples == 1:
        glCreateTextures(GL_TEXTURE_2D, len(tex), tex)
        glTextureStorage2D(tex[0], 1, GL_RGB8, W, H)
        glTextureParameteri(tex[0], GL_TEXTURE_MAG_FILTER, GL_NEAREST)
        glTextureParameteri(tex[0], GL_TEXTURE_MIN_FILTER, GL_NEAREST)
        glTextureStorage2D(tex[1], 1, GL_DEPTH_COMPONENT32F, W, H)
        glTextureParameteri(tex[1], GL_TEXTURE_MAG_FILTER, GL_NEAREST)