I'm afraid I'm not familiar with OpenGL or how it works with shaders, so hopefully someone who is can chime in with some advice that may help you with your transition from that to XNA.
However, as far as XNA is concerned, it doesn't keep any state data for shaders as far as I know. Each frame you have to set the properties for the shader effects you have assigned to each of your models. So if you have a model, you'll need something like:
foreach (ModelMesh mesh in model.Meshes)
{
foreach (Effect effect in mesh.Effects)
{
Matrix world = transforms[mesh.ParentBone.Index] * rotation;
effect.Parameters["World"].SetValue(world);
effect.Parameters["View"].SetValue(view);
effect.Parameters["Projection"].SetValue(projection);
}
mesh.Draw();
}
Where World, View, and Projection are parameters for the shader effect. Does that answer your question?
Tom