SharpDx工具包SwapChainPanel集成

时间:2014-01-28 17:43:08

标签: c# directx windows-8.1 directx-11 sharpdx

我目前正在使用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的方式相同?

谢谢!

1 个答案:

答案 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事件处理程序。