The gfx driver was king
3D: State Machine
Before the programmable GPU the graphic card was a glorified fixed function state machine. It was configured by enabling and disabling certain features. If you need texture mapping set the texture flag, is blending your thing set all the parameters you need for it. So that's what the API's like OpenGL and DirectX did. They let you set all the states or put them in objects to make it possible to change some of them at the same time. When it's finally time to draw something on the GPU all these states are checked, validated and merged to create the current state that will be used for the rendering. Everyone using one of these API's ask 'why is nothing displayed, what state flag did i miss' once a week.