well first of all FSO has an abstraction layer, currently it does nothing but obfuscate things, but untill recently it was the thing that allowed FSO to run in Direct3d or Open GL, the FSO abstraction layer is the interface between the graphics subsystem and the rest of the game engine. it consists of a large collection of function pointers, when the game is started up these pointers are set to either a OGL or a D3D function, the interface of the functiona are identical, and the high level behaviors of the functions are (suposed to be) identical but one is implemented useing D3D and the other is implemented with OGL. the origonal workflow of the pipeline was call some functions to set some states (alpha blending, texture, ect) call some functions to draw some stuff. when we moved into the HTL world we sort of changed that, the old method still is in effect for a lot of built in effects, but for ships when they are loaded we call some functions to load the geometry into the video card (it returns a handle to it) then when the game is playing when we want to draw a ship we set the geometry set the states draw it change states (to specular mapping) draw it again, note we don't set the geometry more than once and in the old method we had to draw the geometry one polygon at a time, the new method let's us draw the whole thing in one blast.