Почему общая поверхность очереди необходима для совместной работы разных версий DirectX и, более конкретно, для взаимодействия WPF и DirectX 11 - PullRequest
5 голосов
/ 09 июля 2011

Я хочу, чтобы DirectX 11 работал внутри WPF.Из ответов на на этот вопрос очевидно, что это возможно.Второй ответ указывает на некоторый код Microsoft, который реализует «Shared Surface Queue».

Я перебираю код очереди shared Surface, но я понятия не имею, какую цель он выполняет (кроме необходимости сделать другоеВерсии Directx имеют общую поверхность).Какова цель создания общей очереди поверхностей для совместного использования поверхностей DirectX?(Специально для WPF в сочетании с DirectX 11).

Примечание. В отличие от приведенного мной вопроса, я не использую slimDX

1 Ответ

5 голосов
/ 18 февраля 2013

Причина связана с проблемами синхронизации между различными интерфейсами Direct3D и, возможно, между композицией WPF и несколькими потоками.Вот несколько полезных ссылок ...

Общая очередь Direct3D9Ex и DXGI
http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf

Совместное использование поверхности между графическими API-интерфейсами Windows http://msdn.microsoft.com/en-us/library/ee913554%28VS.85%29.aspx

WPF D3D InteropОбразец C ++ и C #.MS Kinect SDK использует метод очереди с общей поверхностью для образца SDK http://msdn.microsoft.com/en-us/library/jj591490.aspx

Некоторые обсуждения, связанные с проблемами без синхронизации, возникшими при разработке slimdx http://www.gamedev.net/topic/606138-slimdx-issues-with-keyedmutex-and-wpf/

...