anchor.diff:      let indexAttribute = 2u        
       attributeLocations.Add (positionAttribute, "Position")
       attributeLocations.Add (normalAttribute, "Normal")
  -    //attributeLocations.Add (indexAttribute, "Index")
  +    attributeLocations.Add (indexAttribute, "outputColor")
   
       let shaderProgram = ShaderProgram()
  +    shaderProgram.Bind(gl)
  +    attributeLocations.AsEnumerable()
  +    |> Seq.iter (fun x -> shaderProgram.BindAttributeLocation(gl, x.Key, x.Value))
  +    
  +
  +#if DEBUG
  +    let shader gl shaderSource = 
  +        let shader = Shaders.VertexShader()
  +        shader.CreateInContext(gl)
  +        shader.SetSource(shaderSource)
  +        shader.Compile()
  +        if not (shader.CompileStatus.HasValue) then 
  +            failwith (sprintf "failed with source:\n %s" shaderSource)
  +        if not (shader.CompileStatus.Value) then
  +            failwith (sprintf "failed with source:\n%s\ninfoLog:\%s" shaderSource shader.InfoLog)
  +        shader
  +
  +    let pixelVertexShader = shader gl vertexShaderCode
  +    let pixelFragmentShader = shader gl fragmentShaderCode
  +
  +    pixelVertexShader.IsEnabled <- true
  +    pixelFragmentShader.IsEnabled <- true
  +#endif
  +
       shaderProgram.Create(gl, vertexShaderCode, fragmentShaderCode, attributeLocations)
   
       /// Called after the window and OpenGL are initialized. Called exactly once, before the main loop.
  
positive.code:         gl.BindVertexArray(vao.[0])
  
      let Display () =
          gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f)
          gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT)
  
          gl.UseProgram(shaderProgram.ShaderProgramObject)
  
negative.code:             File.ReadAllText(textFileName)
          else
              File.ReadAllText(Path.Combine(__SOURCE_DIRECTORY__, textFileName))
      
  
  module Main = 
  