The question is 2D specific.
I am a constantly updating texture, which is a render target for one of my layers. The update is a whole redraw of the texture and is performed by drawing sprites and outputting text. The operation is performed frequently, consumes quite a lot of CPU and I have, of course, optimized the number of the redraws to keep it down.
Is there a way to buffer these operations in Direct3D? Because currently I have to repeatedly construct a chain of sprite/text operations. Lets assume any game performing a world update – how do they overcome this tedious work? Maybe by creating more layers?
The best thing for me would be creating a modifiable draw chain object, but I haven’t found anything like this in Direct3D.
There are a few general methods you might look into:
As far as actually buffering, the driver will handle that for you, when and where it’s appropriate. State blocks can effect buffering, by delivering all the modes in a single call (I forget whether it’s good or bad, though I believe they can be beneficial). Cutting down the calls to:
is very likely to help with CPU use.