I have a spritebatch class, and a number of classes that use it, in order to render textures and text to the screen.
I also have a billboard rendering class. It renders sprites in a 3d world.
It turns out, I need a combination of these two classes' abilities; I need to render 2d text in a 3d world.
I am not going to create new "label" classes in order to use the billboard renderer; that's just stupid.
Applying matrix transformations to my text before sending them to the spritebatch is also cumbersome. (For some reason too, the images-text rendered this way is fixed to pixel coordinates, resulting in a weird "wobble" effect when they (or the camera) move around in the world).
So, the way I see it, I have two choices:
1) Render my labels and whatnot thourgh the spritebatch class to a renderTarget (not the screen), and then use the billboard renderer to render the final result in the 3d world.
2) Re-write my spritebatch class to actualy use internaly the billboard renderer, and thus give me the option to render my labels etc... any way i want.
Any suggestions? The first option is the easiest to code, and I have seen many people suggest that approach. I can't help but find it extremely inefficient (this changing back between renderTarget and backbuffer should have quite an effect on performance).