Multi Threaded Direct3D
In the previous post I mentioned that I would look in to multi threaded rendering and I have done that. The minimal example attached and available for download is really simple sample, that creates a Direct3D device and cleans it.
If you would further apply the trick that is described on the 26 slide of Optimizing Direct X On Multi Core Architectures then I'm certain you can create something very flexible.
For example: If you need a vertex buffer, you lock the RenderingThread using RenderingThread::Lock which will only be released once the CRITICAL_SECTION has been released by another thread. Then you could ask the RenderingThread to create a wrapper of IDirect3DVertexBuffer9 which has added function that it will buffer everything and only update IDirect3DVertexBuffer9 inside the RenderingThread. If done correct you can easily multithread without having to worry about the following error message:
You can download the source code here: DirectXMultiThreaded.zip (source only)