Original Post
I was wondering if someone had some answers to the following questions, hopefully with experience through a use case: 1) I want to support some nice shader LOD without necessarily changing my geometry. The aim is to make it cheaper to render stuff in the distance (no kidding). I thought that perhaps I could have one stream with pos,nrm,tex and another with tangent (and optional bitangent or handedness factor for derivation via cross product with normal). To switch to the lower LOD, I wouldn't need to change vertex buffers, only vertex declarations (how expensive are these?), shaders and only use stream 0. This also means for cards that won't have normal mapping due to performance, I simply don't load that data and don't need to waste time populating meshes on load with components stripped out. Thoughts? 2) I would like to put all my vertices of some large models in one vertex buffer and use SetStreamSource to simply change the offset and vertex stride, but NOT change the vertex buffer. I have the offset and stride calculated in my tool offline so that's easy, but I'm thinking that some drivers may be "dumb" and assume I'm swapping a vertex buffer and do some nasty stall or re-upload my VB or something equally bad for performance rather than simply adjust an offset value within the driver. Thoughts? I do appologise for not testing all this myself, but (1) I sincerely don't have time on my current project and (2) I thought perhaps these techniques and associated discussion may prove useful for others. Thanks a heap!