I don''t have any experience with making my own 3d engine, but I''m pretty sure of how they do it in halflife. They just make a quad that is a very small amount along the normal of the surface, and have an assortment of blood/explosion textures with transparency. They store these in an array (in halflife, size of "mp_decallimit" i think), adding when blood is splattered or brains spilled, and deleting the oldest decal in the list when space is needed for a new one.
Dont know if this helps, but I hope you get it working. Love seeing a scorch mark surrounded by blood where my enemy used to be