anchor.diff:                  { SpriteIndex : int
                     CpuBuffer : nativeint
                     GpuBuffer : uint
  +                  GpuVao : uint
                     BatchState : SpriteBatchState }
   
           /// Create a texture frame buffer.
  
positive.code:             Gl.UnmapBuffer Gl.BufferTarget.ArrayBuffer |> ignore<bool>
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, 0u)
  
          let private RenderSpriteBatch numSprites texture cpuBuffer gpuBuffer =
              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(this->vao);
              Gl.DrawArrays (Gl.BeginMode.Triangles, 0, 6 * numSprites)
              Gl.BindVertexArray 0u
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, 0u)
  
negative.code:             | Some env ->
                  if env.SpriteIndex > 0 then
                      EndSpriteBatch ()
                      RenderSpriteBatch env.SpriteIndex env.BatchState.Texture env.CpuBuffer env.GpuBuffer env.GpuVao
              | None -> ()