Aby debugować program przy użyciu XNA w programie Silverlight5

Strona zaktualizowana :
Data utworzenia strony :

Wyjaśnienia są wyjaśnione w kolejności od momentu utworzenia projektu, więc pomiń części, które rozumiesz.

Najpierw utwórz aplikację Silverlight. Z menu Visual Studio wybierz polecenie Plik, Nowy, Projekt.From the Visual Studio menu, choose File, New, Project.

プロジェクトの新規作成

Wybierz opcję Aplikacja Silverlight.

Silverlight アプリケーションを選択

Jeśli chodzi o obsługę witryn sieci Web, należy określić witrynę, która ma być obsługiwana. Strony testowe, które są generowane automatycznie podczas debugowania w samym programie Silverlight, nie mogą uruchamiać programów XNA, które używają procesora GPU. (Nie dotyczy to jednak ręcznego tworzenia strony testowej).

ホストする Web サイトの作成

Po utworzeniu projektu kliknij prawym przyciskiem myszy pozycję Odwołania w aplikacji Silverlight i wybierz polecenie Dodaj odwołanie.

参照の追加

Wybierz "Zespół" i "Struktura" z menu po lewej stronie i sprawdź następujące elementy. (Nie naciskaj jeszcze przycisku OK)

  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Graphics
  • System.Windows.Xna

参照するアセンブリを選択

Następnie wybierz "Advance" z menu po lewej stronie, sprawdź następujące elementy i naciśnij przycisk OK.

  • Microsoft.Xna.Framework.Graphics.Extensions
  • Microsoft.Xna.Framework.Math

Wybraliśmy minimum niezbędne do uruchomienia programu XNA, więc wybierz zespół, do którego chcesz się odwołać zgodnie z Twoimi potrzebami.

参照するアセンブリを選択

Dodano odniesienie do zespołu.

参照一覧

Następnie poprawimy kod. Tym razem opisano tylko minimum informacji, które pokazują, czy program XNA działał poprawnie.

W aplikacji Silverlight otwórz plik MainPage.xaml i dodaj następujący kod:

<Grid x:Name="LayoutRoot" Background="White">
  <!-- 追加ここから -->
  <DrawingSurface Draw="DrawingSurface_Draw" />
  <TextBlock x:Name="textBlockMessage"/>
  <!-- 追加ここまで -->
</Grid>

DrawingSurface to obszar, do którego rysuje program XNA. Po uruchomieniu zdarzenie Draw występuje wielokrotnie, więc opisz tam proces rysowania. Tym razem narysuję tylko kolor tła, abyś mógł zobaczyć, czy działa poprawnie.

textBlockMessage służy do wyświetlania tekstu, niezależnie od tego, czy program XNA działa poprawnie, czy nie. Tym razem umieszczam go, aby to potwierdzić, więc nie potrzebuję go w rzeczywistym wydaniu.

Po wykonaniu tej czynności spróbuj otworzyć plik "MainPage.xaml.cs" Najpierw uporządkujmy używane części. Przestrzeń nazw dla aplikacji Silverlight jest określona, więc zmienimy ją na XNA. Podczas tworzenia go zdefiniuj go zgodnie z aplikacją.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
//using System.Windows.Input;
//using System.Windows.Media;
//using System.Windows.Media.Animation;
//using System.Windows.Shapes;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Windows.Graphics;

Następnie, po uruchomieniu, chcesz wyświetlić bieżący tryb mieszania i powód, dla którego nie możesz rysować tekstu. Piszę to w konstruktorze, ponieważ wiem, kiedy uruchamiana jest aplikacja Silverlight.

public MainPage()
{
  InitializeComponent();

  textBlockMessage.Text
    = string.Format("RenderMode:{0}\r\nRenderModeReason:{1}",
                    GraphicsDeviceManager.Current.RenderMode.ToString(),
                    GraphicsDeviceManager.Current.RenderModeReason);
}

Napisz proces rysowania. W tym przypadku chcemy, aby struktura XNA rysowała tło, gdy wystąpi zdarzenie rysowania.

private void DrawingSurface_Draw(object sender, DrawEventArgs e)
{
  GraphicsDeviceManager.Current.GraphicsDevice.Clear(new Color(0x64, 0x95, 0xED));
}

Uruchom debugowanie.

デバッグ実行。

Po uruchomieniu zostanie wyświetlony w sposób pokazany na rysunku. RenderMode: Unavailable nie zezwala na renderowanie sprzętowe, RenderModeReason:GPUAccelerationDisabled wyłącza renderowanie GPU. Jest to problem po stronie serwera, więc musisz go najpierw włączyć.

描画ができない

Otwórz plik < nazwa projektu>TestPage.aspx z projektu ASP.NET hostowanego w przebiegu programu Silverlight.

TestPage.aspx を開く

Dodaj "EnableGPUAcceleration" do parametru obiektu i ustaw wartość na "true". Daje to stronie serwera uprawnienie dla tej aplikacji Silverlight do korzystania z procesora GPU. (W rzeczywistości jest to rozwiązywane przez przetwarzanie klienta, ale ponieważ jest to serwer, który generuje HTML, jest to problem po stronie serwera.)

<body>
  <form id="form1" runat="server" style="height:100%">
    <div id="silverlightControlHost">
      <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
        <param name="source" value="ClientBin/DebugXna.xap"/>
        <param name="onError" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="minRuntimeVersion" value="5.0.61118.0" />
        <param name="autoUpgrade" value="true" />
        <!-- 追加ここから -->
        <param name="EnableGPUAcceleration" value="true" />
        <!-- 追加ここまで -->
        <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Microsoft Silverlight の取得" style="border-style:none"/>
        </a>
      </object>
      <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
    </div>
  </form>
</body>

Jeśli spróbujesz uruchomić go z tym, będzie wyglądał jak rysunek. RenderModeReason to teraz SecurityBlocked. Wynika to z faktu, że rysowanie GPU nie jest domyślnie dozwolone ze względów bezpieczeństwa. Ponieważ jest to problem klienta, oprócz uruchamiania debugowania należy również poprosić użytkownika o wykonanie następujących kroków, aby umożliwić rysowanie procesora GPU.

RenderModeReason が SecurityBlocked に変化

Aby zezwolić na renderowanie GPU, kliknij prawym przyciskiem myszy aplikację Silverlight i wybierz z menu polecenie Silverlight.

Silverlight を選択

W oknie dialogowym, które zostanie otwarte, wybierz kartę "Uprawnienia", wybierz odpowiednią witrynę, a następnie kliknij przycisk "Zezwól".

アクセス許可

Jeśli uprawnienie to "Zezwalaj", kliknij przycisk OK.

アクセス許可が「許可」に代わる

Jeśli debugujesz podczas debugowania, odświeżanie przeglądarki nie działa, więc jeśli zamkniesz przeglądarkę i uruchomisz ją ponownie, zobaczysz, że RenderMode staje się rysunkiem sprzętowym, a rysunek tła XNA jest również włączony. Teraz możesz tworzyć programy XNA do woli.

ハードウェアによる描画が有効