anchor.diff:          }
           _texChanged = false;
         }
  -//      gl.bufferDataTyped(WebGL.ARRAY_BUFFER, new Float32List.view(verts.buffer, 0, _vOff), WebGL.DYNAMIC_DRAW);
  -      gl.bufferSubDataTyped(WebGL.ARRAY_BUFFER, 0, new Float32List.view(verts.buffer, 0, _vOff));
  +      gl.bufferDataTyped(WebGL.ARRAY_BUFFER, new Float32List.view(verts.buffer, 0, _vOff), WebGL.STREAM_DRAW);
         gl.drawElements(WebGL.TRIANGLES, (_vOff ~/ 8 ~/ 4 * 6), WebGL.UNSIGNED_SHORT, 0);
       }
       _vOff = 0;
  
positive.code: 
  //TODO Add Z index (make it a vert attrib) so that things don't have to be painter's algorithim. good idea? maybe...
  class SpriteBatch {
    
    static int BUFFER_COUNT = 3;
    static bool USE_SUBDATA = false;
    
    //Max 65536 verts before flush
    static int BATCH_MAX_VERTS = 65536;
  
negative.code:     gl.disableVertexAttribArray(1);
      gl.disableVertexAttribArray(2);
      _rendering = false;
    }
    
    void flush() {
  