Adding function pointers for gfx wouldn't be as elegant as for particle logic. The way particles are rendered depends on what view mode you currently use. So you would end up with [View-mode-number]*[Particle-number] functions.
The graphics are not creating lag. It's the calculations of each and every particle that cause lag. The graphics take a very insignificant amount of time to render, it wouldn't even make a noticeable difference at all.
It isn't as easy as "Make the code more efficient". If you would like to take a whack at the source code yourself, by all means go for it.