I'm currently working on an D3D11 module for my engine. I've got it to work fine mostly and I can now switch between DX8, DX9 and DX11 (with shaders).
However I have extreme performance problems with text rendering. I'm using bitmap fonts, and the naive approach, that worked fine for DX8 and DX9 used single quads per letter and DrawPrimitiveUP. Obviously that's not available anymore with DX11.
For DX11 my simple implementation creates a vertex buffer, fill it with data, upload it, render it and destroy it. One "optimization" was to reuse the created vertex buffer for every quad, but that didn't help much. It seems DrawPrimitiveUP does some heavy optimization under the hood, but the nature of that is unfortunately not known (to me).
What would be the best approach here? Really create vertex buffers for every string currently displayed and cache them?
I would prefer to stay with bitmap fonts (I'm aware of the downsides of foreign languages, etc..)