【问题标题】:Mix DirectX 12 and XAML controls in UWP在 UWP 中混合使用 DirectX 12 和 XAML 控件
【发布时间】:2017-02-02 13:33:29
【问题描述】:

我想使用 C++/CX 和 DirectX 12 创建一个 UWP 应用 (XAML),以便我可以混合 XAML 控件(网格、按钮等)和 DirectX,类似于关卡编辑器,但我'正在努力寻找一种方法来初始化 DirectX 以在特定控件(如网格)内呈现。

基本模板和所有其他教程只展示了如何在应用程序的整个区域内进行操作。创建设备资源时,我们使用 SetWindow(CoreWindow::GetForCurrentThread()); 设置要绘制的窗口;

有没有办法从 xaml 控件中使用 hwnd 创建设备资源?有没有办法为特定控件获取 hwnd?

【问题讨论】:

  • “有没有办法获得特定控件的 hwnd?” - 不,XAML 控件不受 HWND 引用的单个本机窗口的支持。应用程序窗口只有一个 HWND

标签: uwp c++-cx uwp-xaml directx-12


【解决方案1】:

DirectX - Using XAML with DirectX and C++ in Windows Store Apps 文章中的信息都适用于将 Direct3D 11 或 Direct3D 12 与 XAML 混合。

不清楚为什么要使用 DirectX 12 编写关卡编辑器。一般来说,DirectX 11 是一个更易于使用的 API。除非您已经达到 DirectX 11 的 CPU 端性能限制,否则对于关卡编辑器来说,工作量可能比它的价值要多。

【讨论】:

  • 谢谢!这正是我一直在寻找的! Dx12 而不是 11 的原因非常简单——只是想学习一些新东西 :) 但我明白你对 DirectX 11 的看法,它对于一些生产就绪的产品来说非常有意义。这不是我想要做的关卡编辑器应用程序,它更多的是用于测试大地图的不同方法和生成它们的不同技术,因此我需要一种简单的方法来更改或添加参数,显示一些结果和日志...
【解决方案2】:

为了进一步参考,这里有一个官方代码示例:https://blogs.msdn.microsoft.com/windowsappdev/2012/03/15/combining-xaml-and-directx/

【讨论】:

  • 该链接是特定于 Windows 8 的。虽然有助于理解内部发生的事情,但大部分内容已随着 UWP(即 Windows 10)而改变。详情请见DirectX and XAML interop
  • 是的,那个是最新的。感谢分享!
猜你喜欢
  • 2016-10-26
  • 2011-12-02
  • 2020-11-15
  • 2018-04-04
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多