Как реализовать взаимодействие между XAML и цепочкой обмена DirectX с C ++ / WinRT - PullRequest
1 голос
/ 21 марта 2019

Документация Microsoft предоставляет код для реализации взаимодействия между XAML и цепочкой подкачки DirectX с C ++ [1]:

Microsoft::WRL::ComPtr<ISwapChainPanelNative>   m_swapChainNative;
// ...
IInspectable* panelInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(swapChainPanel);
panelInspectable->QueryInterface(__uuidof(ISwapChainPanelNative), (void **)&m_swapChainNative);

Однако я не смог понять, как мне реализовать это с C ++ / WinRT.

При использовании этого кода я получаю следующее сообщение об ошибке:

"[...] 'reinterpret_cast': невозможно преобразовать из 'winrt :: Windows :: UI :: Xaml :: Controls :: SwapChainPanel' в 'IInspectable *'"

Я использую DirectX12, Visual Studio 2017.

[1] https://docs.microsoft.com/en-us/windows/desktop/api/windows.ui.xaml.media.dxinterop/nn-windows-ui-xaml-media-dxinterop-iswapchainpanelnative

1 Ответ

0 голосов
/ 22 марта 2019

Я не уверен, почему в документации WRL используется reinterpret_cast. C ++ / WinRT делает это довольно просто:

winrt::com_ptr<ISwapChainswapChainNative> m_swapChainNative;
// ...
swapChainNative = swapChainPanel.as<ISwapChainPanelNative>();
...