As to how to copy it over to back buffer as in my case Invalidate the surface as using D3DImage (part of WPF) ?
Can't help you there, I don't use WPF. Don't even know if WPF can do it. the DirectX API can for sure. But I'm not sure about Windows Presentation Foundation.
From:
https://msdn.microsoft.com/en-us/library/aa970268(v=vs.110).aspx
"Windows Presentation Foundation (WPF) in Visual Studio 2015 provides developers with a unified programming model for building modern line-of-business desktop applications on Windows."
So yeah, its a business app API. I'd be kind of surprised if it supported stuff like render to texture. You may have to use the underlying DirectX API.
How would my ortho camera work in this case.
No different really, render to offscreen surface is simply a way to give you multiple back buffers you can target. Once you set the target surface, everything else is normal rendering, IE set the view mat and lights, and draw everything (lights! camera! action!).
Of course then all you have is this "bitmap" sitting in ram (or vidram most likely), which you then have to do something with - which probably means copying it somewhere so it can then be used. So if you created an offscreen surface in sysram (slow!) it would most likely copy the back buffer to ram, then copy it back to video texture memory when you used the surface to create a texture. Obviously you want to used the fastest ram possible for offscreen surfaces - or that RAM which requires less copying of things from here to there.
And don't forget the inherent performance hit from the fact that each offscreen render is basically another entire call to render to draw a single frame. So you have to render TWICE! - or more if you use more than one offscreen surface in the scene. So if you render twice, your FPS will more of less drop by 50%, depending on how much you draw. That's usually the big performance hit of render to surface - its an additional call to render(). Somewhat similar to stencil buffer volume shadow techniques where you'd have to render THREE times - one to add it in, one to subtract it out, and one using the result as a bitmask - as i recall - well - something like that. <g>.