Personally, I would pass the array of liquid, free flowing particles into an array of inter connected, rigidly attached particles.
Basically, I am saying to take the hint of your physics code, that let's you know when a particle's rigid body went to sleep by having its velocity reach or approach 0 for enough time. Use this information to weld particles together as they stack by themselves.
Now, depending on your processing power available, you could:
1) Use a joint to attach touching particles, making them stick to each other up until a point where all particles are together, making the fluid not so fluid anymore.
2) Just remove the particle from the simulation, counting it as solid forever. As more particles go to "sleep", you continuously build a mesh to render instead of the particles. In the end you have no more particles but only a mesh / texture with the static fluid representation.
Depending on whether the solid can go back to a fluid, you'll have to keep the particle information alive, otherwise you can optimize by losing unnecessary data.
I am not 100% sure if I understood the question as a whole, but still, while I tried to explain how to solidify independent particles as far as physics would go, on the rendering side I would suggest to:
1) If using all particle information, do some kind of volume splatting (I think I got the name right? ), by rendering all particles as some kind of blob into a render texture. Then, you blur and grow a bit these hard edges particles so they overlap each other, and finally apply a filter that detects where there is color above a threshold, count it as a pixel inside the fluid, otherwise exclude it. This gives you a nice smooth shape for the fluid with no empty space in the middle, usually. You can then color it in different ways, but that depends on the material and your game graphical style. Then just render your fluid texture to the main level, and apply clipping if you need to make hard borders for the fluid, as to fit inside a container etc. Please someone correct me if I said something wrong here.
2) Otherwise just render the generated mesh, with or without similar technique as above.
Please provide more information in the question if other people also find it a bit vague. Hope this helps.