public GLTexture Process(Action <GLShader> Action)
 {
     RenderTarget.BindUnbind(() =>
     {
         GL.glClearStencil(0);
         GL.glClearDepthf(0f);
         GL.glClearColor(0, 0, 0, 1);
         GL.glClear(GL.GL_COLOR_CLEAR_VALUE | GL.GL_DEPTH_CLEAR_VALUE | GL.GL_STENCIL_CLEAR_VALUE);
         Shader.GetAttribute("a_position").NoWarning().SetData <float>(PositionBuffer, 2);
         Shader.GetAttribute("a_texcoords").NoWarning().SetData <float>(TexcoordsBuffer, 2);
         Shader.GetUniform("u_textureSize").NoWarning().Set(new Vector4f(Width, Height, 0, 0));
         Shader.GetUniform("u_pixelSize").NoWarning()
         .Set(new Vector4f(1.0f / Width, 1.0f / Height, 0, 0));
         Shader.Draw(GLGeometry.GL_TRIANGLE_STRIP, 4, () => { Action(Shader); });
     });
     return(RenderTarget.TextureColor);
 }