Optimizations - The loader for the main library will be where certain model optimizations choices take place. When loading a static model I'm thinking that all subsets with the same materials will be grouped into one mesh. This also goes for subsets with no materials. This should reduce the number of DIP calls as well as reduce the number of state changes. I guess that's important.
Another optimization could be implemented by finding subsets that share the same shader and rendering them together to reduce the number of set shader calls. Any other ideas would be very much appreciated.
I do have a question about Alpha Blending and Alpha Testing. Is it better to leave these on all the time or just use them when needed? My thinking is that it would be better to just leave them on all the time since my blending depends on the diffuse alpha color and I could choose one color that will always be tested out. I'm not all that sure how these operations work inside of DirectX 9 and am looking to find good ways to reduce state changes.