prefer to use glMapBufferRange if it's available
explicit calling glDepthFunc with GL_LEQUAL at initialization
improve drawing asset