Почему общая поверхностная очередь необходима для совместной работы разных версий DirectX и, более конкретно, для взаимодействия WPF и DirectX 11

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

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

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


person Community    schedule 08.07.2011    source источник


Ответы (1)


Причина связана с проблемами синхронизации между различными интерфейсами 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 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/

person Greg    schedule 18.02.2013