better opengl buffer handling