// We haven't uploaded mipmaps, so disable mipmapping (otherwise the texture will not appear).
// On newer video cards, we can use GL.GenerateMipmaps() or GL.Ext.GenerateMipmaps() to create
// mipmaps automatically. In that case, use TextureMinFilter.LinearMipmapLinear to enable them.
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

Well though I am not an expert, still in your shader you should have something called Sampler2D which is an uniform and that should have your texture loaded in it. Since you have moved to shaders,
So you will have to perform shading in frag shader and there you have to look up the texture value for each fragment. Assuming you have your texture coordinates in frag shader you will do something like:

Now assign this color to current pixel. Here the texCoordinate is per fragment. In my code I passed texCoordinate to vertex shader and then passed them as varying to frag shader. So, I have an interpolated texCoordinate for each fragment. I just do the look up and assign the result to the current pixel. Hope this clarifies your doubt.