anchor.diff:            LightPositionsUniform : int
             LightColorsUniform : int
             PhysicallyBasedShader : uint }
  +
  +    type [<StructuralEquality; NoComparison>] PhysicallyBasedSurface =
  +        { VertexBuffer : uint
  +          NormalBuffer : uint
  +          TexCoordsBuffer : uint
  +          IndexBuffer : uint }
   
       /// Assert a lack of Gl error. Has an generic parameter to enable value pass-through.
       let Assert (a : 'a) =
  
positive.code: 
          // fin
          (indexBuffer, vertexBuffer, vao)
  
      /// Draw a sprite whose indices and vertices were created by OpenGL.Gl.CreateSpriteQuad and whose uniforms and shader match those of OpenGL.CreateSpriteShader.
      let DrawSprite (indices, vertices, vao, modelViewProjection : single array, insetOpt : Box2 ValueOption, color : Color, flip, textureWidth, textureHeight, texture, modelViewProjectionUniform, texCoords4Uniform, colorUniform, texUniform, shader) =
  
negative.code:         OpenGL.Gl.BindBuffer (OpenGL.BufferTarget.ElementArrayBuffer, indexBuffer)
          let indexDataSize = uint (indexData.Length * sizeof<uint>)
          let indexDataPtr = GCHandle.Alloc (indexData, GCHandleType.Pinned)
          try OpenGL.Gl.BufferData (OpenGL.BufferTarget.ElementArrayBuffer, indexDataSize, indexDataPtr.AddrOfPinnedObject (), OpenGL.BufferUsage.StaticDraw)
          finally indexDataPtr.Free ()
          Assert ()
  
  