Btw I also played Half life and quake team fortress for quite a while. There was about a 3 month stretch where natedog,superfly,pyro and myslef were at it every evening after work.
Sorrows you actualy have it backwards. I was doing glide, and opengl , pryor to trying d3d. In the end the desicion on which api came down to which is the best supported by the hardware guys, thats what drove the desicion to use d3d. But the code is structured in sutch a way do be able to rapidly adapt changes in 3d api's. Iv'e been burnt in the past in changes of api suport, and the way I do things now is to only touch the api at the lowest level I can to make switch easyer. I do all my own.transformation, lighting,foggin,cliping, and basicly just feed 2d prelit triangles to the api. Only real goodies I still wish to add to the core eng. is bump mapping to the terrian and zbuffering to remove some of the few sorting artifacts. I have the core code partialy written but it's just not a priority at this time. Ive also have done test ports to glide just to see what the fps impact would be, suprising thing was there was no differenct.
Just to be able to support changes we even rolled our own windows gui. All the buttons, text editing list boxes, and list views are not using any window api items, this was done to get away from as much system depent code as posible. Btw ever notice how that clip board actulay maps 2d api's to a 3d object? Iv'e never seen any other game do anything similar. And how many other games are completly configureurable when you are playing? Normaly they put you into a 2d api to do any gui stuff.
To sum it all up,what we have done is to build the core foundation for a long time to come. Adding the glitzy touches will come, but their primary purpose is wow factor on the initial viewing of new people, and realy only add small amouts to the game play factor. We just choose to work on the game play and stablity side first. Strong foundations make for a long lasting house.
HiTech