D3DImage and Software Rendering
If the WPF render thread is doing software rendering, D3DImage will not show up. I don't think we specifically called this out in the documentation so it can come as a surprise when you first encounter it. Off the top of my head, here are times when the render thread is in software:
- RenderCapability.Tier == 0
- You set HwndTarget.RenderMode = SoftwareOnly
- A video card driver before November 2004 (date subject to change in the future)
- Remote desktop
- The window size is larger than the max texture size of the video card (rare)
All of these cases should be covered by simply checking #1 except for #2. You might be surprised by #4, but in 3.5 SP1 we had to change how remoting works.
You're probably thinking that I left out RenderTargetBitmap and printing since they both use software rendering, but they happen on the UI thread! D3DImage will show up because they call CopyBackBuffer().
-- Jordan
P.S. Don't forget to read the perf notes when using D3DImage
Comments
Anonymous
January 13, 2009
PingBack from http://blog.a-foton.ru/index.php/2009/01/14/d3dimage-and-software-rendering/Anonymous
January 13, 2009
PingBack from http://blog.a-foton.ru/index.php/2009/01/14/d3dimage-and-software-rendering/Anonymous
January 05, 2012
This is really unfortunate. It means that an app that uses D3DImage won't display correctly when accessed over Remote Desktop (which always yields render tier 0). Other Direct3D apps work fine over RDP, so it is a mystery why Microsoft couldn't get this to work.Anonymous
March 03, 2013
@TDworshak It's working in .Net 4.5