2014-01-28 4 views
1

В настоящее время я работаю с SharpDx для проекта, который нацелен на Win 8.1 и требует нескольких 3D-видовых экранов на странице, а также других элементов xaml. Я до сих пор смог установить инструментарий SharpDx через Nuget и смог запустить стандартный проект инструментария. Однако в проекте используется элемент управления SwapChainBackgroundPanel как метод рендеринга 3D-контента, как показано ниже.Инструментарий SharpDx Интеграция SwapChainPanel

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, однако, когда я попытался замените SwapChainBackgroundPanel на SwapChainPanel, я получил ошибку.

Кто-нибудь знает, есть ли в ближайшем будущем план обновления инструментария SharpDx для работы с SwapChainPanel так же, как в настоящее время с SwapChainBackgroundPanel?

Спасибо!

+0

SharpDX обновляется практически ежедневно. Вы можете загрузить [последнюю версию dev] (http://sharpdx.org/upload/SharpDX-SDK-LatestDev.exe) В любом случае, какая ошибка у вас возникла? Если он еще не реализован, вы можете запросить у него [GitHub] (https://github.com/sharpdx/SharpDX). – TheWanderer

ответ

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, если это лучше подходит для вашей архитектуры.

+0

Каков правильный способ выпуска игровых ресурсов? MiniCubeGame impements IDisposable, поэтому его нужно называть somehen. – Dmitry

Смежные вопросы