It just so happens that I use a 2D array of function pointers in my software 3D engine project. First dimension is the bit depth of the scanline renderer, second dimension is which renderer (flat, texture mapped, bilerp'd).

I've just realised that I could just use a 1D array and repopulate it upon changing bit depth... but meh!