anchor.diff:              Gl.BindFramebuffer (Gl.FramebufferTarget.Framebuffer, 0u)
               Gl.UseProgram samplerShaderProgram
               Gl.EnableVertexAttribArray sVertexPos2DAttrib
  -            Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, vertexBuffer)
  +            Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, fullScreenQuadVertices)
               Gl.VertexAttribPointer (sVertexPos2DAttrib, 2, Gl.VertexAttribPointerType.Float, false, 2 * sizeof<single>, nativeint 0)
  -            Gl.BindBuffer (Gl.BufferTarget.ElementArrayBuffer, indexBuffer)
  +            Gl.BindBuffer (Gl.BufferTarget.ElementArrayBuffer, fullScreenQuadIndices)
               Gl.Uniform1i (sTexUniform, 0) // set attrib to texture slot 0
               Gl.ActiveTexture 0 // make texture slot 0 active
               Gl.BindTexture (Gl.TextureTarget.Texture2D, textureFramebufferTexture) // bind texture to slot 0
  
positive.code:              "void main()"
               "{"
               "  gl_Position = vec4( pos.x, pos.y, 0, 1 );"
               "  texCoord = vec2(pos.x, pos.y);"
               "}"] |> String.join "\n"
          let samplerFragmentShaderStr =
              ["#version 410"
  
negative.code:         let indexDataPtr = GCHandle.Alloc (indexData, GCHandleType.Pinned)
          Gl.BufferData (Gl.BufferTarget.ArrayBuffer, indexDataSize, indexDataPtr.AddrOfPinnedObject(), Gl.BufferUsageHint.StaticDraw)
  
          let (fullScreenQuadVertices, fullScreenQuadIndices) = SdlRenderer.createFullScreenQuad ()
  
          while true do
  
              Gl.BindFramebuffer (Gl.FramebufferTarget.Framebuffer, 0u)
              Gl.ClearColor (0.0f, 0.0f, 0.0f, 0.0f)
              Gl.Clear (Gl.ClearBufferMask.ColorBufferBit ||| Gl.ClearBufferMask.DepthBufferBit ||| Gl.ClearBufferMask.StencilBufferBit)
              // 3d rendering here...
  
              Gl.BindFramebuffer (Gl.FramebufferTarget.Framebuffer, textureFramebufferTexture)
              Gl.ClearColor (0.0f, 0.0f, 0.0f, 0.0f)
  