well, i am more a generic programmer, than a graphics programmer. and also, i am a programmer, not specifically a game developer. i sometimes touching the game industry with my works, but nowdays i would not classify myself as a game developer.
talking from graphics - i used third party engines at first, but they was too buggy (just as nowdays), so i self-learned graphics programming with opengl 1.0 using tutorials on the internet. i was not a good programmer in C at that time, but i was still able to put together my stuffs relatively easily. at first, i not actually learned anything beyond my needs (~10 necessary opengl function to paint textured geometry), i just wanted to display the graphics i needed, but not cared about the features of opengl beyond that.
later i enhacned my knowledge a bit more, to cover newer technologies as my hardware (and as the market demand) become more modern (voodoo3->geforce4->radeon9800). my middle-scool math skills was more than enough, and if i need a formula, its easy to find it on the internet. later i started to design software renderers, becouse i was not satisfyed with the conception and compatibility of opengl, gpgpu and shaders.