anchor.diff:              | Some env ->
                   if env.SpriteIndex > 0 then
                       EndSpriteBatch ()
  -                    RenderSpriteBatch env.SpriteIndex env.BatchState.Texture env.CpuBuffer env.GpuBuffer
  -                else ()
  +                    RenderSpriteBatch env.SpriteIndex env.BatchState.Texture env.CpuBuffer env.GpuBuffer env.GpuVao
               | None -> ()
positive.code:             Gl.DeleteTextures (1, [|texture|])
  
          let private CreateSpriteBatchBuffer (maxSprites) =
              //Gl.GenVertexArrays(1, &this->vao);
              let buffers = [|0u|]
              Gl.GenBuffers(1, buffers);
              let buffer = buffers.[0]
              //Gl.BindVertexArray(this->vao);
              Gl.BindBuffer(Gl.BufferTarget.ArrayBuffer, buffer)
              Gl.BufferData(Gl.BufferTarget.ArrayBuffer, nativeint (sizeof<SpriteBatchVertex> * 4 * maxSprites), nativeint 0, Gl.BufferUsageHint.DynamicDraw);
              //Gl.EnableVertexAttribArray(0);
              //Gl.EnableVertexAttribArray(1);
              //Gl.EnableVertexAttribArray(2);
              Gl.VertexAttribPointer (0, 4, Gl.VertexAttribPointerType.Float, false, sizeof<SpriteBatchVertex>, Marshal.OffsetOf (typeof<SpriteBatchVertex>, Property? SbvPosition));
              Gl.VertexAttribPointer (1, 4, Gl.VertexAttribPointerType.Float, false, sizeof<SpriteBatchVertex>, Marshal.OffsetOf (typeof<SpriteBatchVertex>, Property? SbvColor));
              Gl.VertexAttribPointer (2, 2, Gl.VertexAttribPointerType.Float, false, sizeof<SpriteBatchVertex>, Marshal.OffsetOf (typeof<SpriteBatchVertex>, Property? SbvTexCoord));
              //Gl.BindBuffer(Gl.BufferTarget.ArrayBuffer, buffer);
              //Gl.BindVertexArray(0);
              buffer
  
          let private BeginSpriteBatch (buffer : uint) =
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, buffer)
  
negative.code:             Gl.UnmapBuffer Gl.BufferTarget.ArrayBuffer |> ignore<bool>
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, 0u)
  
          let private RenderSpriteBatch numSprites texture cpuBuffer gpuBuffer gpuVao =
              Gl.BindTexture (Gl.TextureTarget.Texture2D, texture)
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, gpuBuffer)
              Gl.BufferSubData (Gl.BufferTarget.ArrayBuffer, nativeint 0, nativeint (sizeof<SpriteBatchVertex> * 4 * numSprites), cpuBuffer)
              Gl.BindVertexArray gpuVao
              Gl.DrawArrays (Gl.BeginMode.Triangles, 0, 6 * numSprites)
              Gl.BindVertexArray 0u
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, 0u)
  