Microsoft文档提供了用于在XAML和使用C ++的DirectX交换链之间实现互操作的代码:
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。
答案 0 :(得分:0)
我不确定WRL文档为何使用reinterpret_cast
。 C ++ / WinRT使这一过程变得非常简单:
winrt::com_ptr<ISwapChainswapChainNative> m_swapChainNative;
// ...
swapChainNative = swapChainPanel.as<ISwapChainPanelNative>();