モノトーンの伝説日記

OBS Studio と Blackmagic Design が大好き。

<mini> WPF で SharpDX 経由にて DirectX を使う

 やり方をメモる。

プロジェクトの作成

 流石にこれはわかるよね?

NuGet で

  • SharpDX.Toolkit.Game
  • SharpDX.Toolkit.Graphics
  • SharpDX.Toolkit
  • SharpDX.Direct3D11
  • SharpDX.DXGI
  • SharpDX

を入れる (SharpDX.Toolkit.Game が以下すべてに依存しているので、それだけ入れればほかも付いてくるはず)。

MainWindow.xaml

<Window
    x:Class="_3DTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="clr-namespace:SharpDX.Toolkit;assembly=SharpDX.Toolkit.Game"
    Title="MainWindow"
    Height="350"
    Width="525"
    Loaded="OnWindowLoaded">

    <Grid>
        <toolkit:SharpDXElement
            x:Name="surface"
            SendResizeToGame="True"
            SendResizeDelay="1"
            LowPriorityRendering="False" />
    </Grid>
</Window>

とでも書いて、コードビハインドで

private void OnWindowLoaded( object sender, RoutedEventArgs e )
{
    this._game = new MiniCubeGame();
    this._game.Run( this.surface );
}

ゲームを開始。

ゲーム (3D コンテンツ) の作成

https://github.com/sharpdx/SharpDX-Samples/blob/master/Toolkit/Common/MiniCube/MiniCubeGame.cs あたりをコピペして使う。適宜編集。

まとめ

 簡単。起動してみたらびっくり。もう動く物体が…!

 GUIWPF、3D は Direct3D。イイネ!