我目前正在使用SharpDx进行针对Win 8.1的项目,并且需要在页面上使用多个3D视口以及其他xaml元素。到目前为止,我已经能够通过Nuget安装SharpDx工具包,并且能够运行标准工具包项目。但是,该项目使用SwapChainBackgroundPanel控件作为渲染3D内容的方法,如下所示。
MainPage.xaml中
<SwapChainBackgroundPanel
x:Class="MyGame1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyGame1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="1280"
d:DesignHeight="800">
</SwapChainBackgroundPanel>
MainPage.xaml.cs中
public sealed partial class MainPage
{
private readonly MyGame1 game;
public MainPage()
{
this.InitializeComponent();
game = new MyGame1();
this.Loaded += (sender, args) => game.Run(this);
}
}
根据我读过的文档,SwapChainBackgroundPanel已被弃用,而不赞成新引入的SwapChainPanel,但是当我尝试用SwapChainPanel替换SwapChainBackgroundPanel时,我收到了一个错误。
是否有人知道在不久的将来是否有计划更新SharpDx工具包以使用SwapChainPanel,其方式与目前使用SwapChainBackgroundPanel的方式相同?
谢谢!
答案 0 :(得分:3)
DirectX 11.2版本已完全支持与SwapChainPanel
的集成。
我添加了sample来演示此功能。
首先,确保您的项目引用DirectX 11.2程序集 - 这涉及项目编辑,如here所述。
在此之后,根据需要编辑页面xaml,例如像这样(为简洁起见,省略了一些代码):
<Page ...>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<SwapChainPanel x:Name="panel" x:FieldModifier="private" />
</Grid>
</Page>
然后你需要像往常一样运行你的游戏:
using SharpDX.Toolkit;
public sealed partial class MainPage
{
private readonly Game _game;
public MainPage()
{
InitializeComponent();
_game = new MiniCubeGame();
_game.Run(panel);
}
}
如果这更符合您的体系结构,您可以将_game.Run(...)
调用移动到Loaded
事件处理程序。