Why is a shared surface queue necessary for different directx versions to work together and more specifcally to interop WPF and directx 11
I want to get directx 11 working inside WPF. From answers to this question it is apparent that this is possible. The second answer points to some microsoft code which implements a "Shared Surface Queue".
I am going through the shared surface queue code, but I have no idea what purpose it fulfills (other than being necessary to make different versions of directx share a surface nicely). What is the purpose of creating a 开发者_运维技巧shared surface queue in order to share directx surfaces? (Specifically for WPF in combination with directx 11).
Note: Unlike the question I cited I am not using slimDX
The reason relates to synchronization issues between different Direct3D interfaces and possibly between WPF composition and multiple threads. Here are some useful links...
Direct3D9Ex and DXGI Shared Surface Queue
http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf
Surface Sharing Between Windows Graphics APIs http://msdn.microsoft.com/en-us/library/ee913554%28VS.85%29.aspx
WPF D3D Interop C++ and C# Sample. MS Kinect SDK uses shared surface queue method for SDK sample http://msdn.microsoft.com/en-us/library/jj591490.aspx
Some discussion relating to problems when not synched, encountered while developing slimdx http://www.gamedev.net/topic/606138-slimdx-issues-with-keyedmutex-and-wpf/
精彩评论