Ladenie programu pomocou XNA v doplnku Silverlight5

Stránka aktualizovaná :
Dátum vytvorenia strany :

Vysvetlenia sú vysvetlené v poradí od vytvorenia projektu, preto preskočte časti, ktorým rozumiete.

Najprv vytvorte aplikáciu Silverlight. V ponuke Visual Studio vyberte položku Súbor, Nový, Projekt.

プロジェクトの新規作成

Vyberte položku Aplikácia Silverlight.

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

Pokiaľ ide o hosťovanie webových stránok, nezabudnite zadať lokalitu, ktorú chcete hosťovať. Testovacie stránky, ktoré sa automaticky generujú pri ladení v doplnku Silverlight, nemôžu spustiť programy XNA, ktoré používajú GPU. (To však neplatí pri manuálnom vytváraní testovacej stránky.)

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

Po vytvorení projektu kliknite pravým tlačidlom myši na položku Referencie v aplikácii Silverlight a vyberte položku Pridať referenciu.

参照の追加

Vyberte "Montáž" a "Rámec" z ponuky vľavo a skontrolujte nasledujúce položky. (Zatiaľ nestláčajte tlačidlo OK)

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

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

Ďalej vyberte "Advance" z ponuky vľavo, skontrolujte nasledujúce položky a stlačte tlačidlo OK.

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

Vybrali sme minimum potrebné na spustenie programu XNA, preto vyberte zostavu, ktorá bude odkazovať podľa vašich potrieb.

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

Pridáva sa odkaz na zostavu.

参照一覧

Ďalej doladíme kód. Tentokrát sú popísané iba minimálne informácie, ktoré ukazujú, či program XNA fungoval správne.

V aplikácii Silverlight otvorte súbor MainPage.xaml a pridajte nasledujúci kód:

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

DrawingSurface je oblasť, do ktorej program XNA čerpá. Po vykonaní sa udalosť Kreslenie vyskytuje opakovane, preto popíšte proces kreslenia. Tentokrát nakreslím iba farbu pozadia, aby ste videli, či funguje správne.

textBlockMessage sa používa na zobrazenie textu, či program XNA funguje správne alebo nie. Tentokrát ho vkladám, aby som to potvrdil, takže ho nepotrebujem v skutočnom vydaní.

Potom otvorte súbor "MainPage.xaml.cs". Po prvé, poďme vyriešiť použitie častí. Priestor názvov pre aplikáciu Silverlight je zadaný, takže ho zmeníme pre XNA. Keď ho skutočne vytvárate, definujte ho podľa svojej aplikácie.

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;

Ďalej pri spustení chcete zobraziť aktuálny režim miešania a dôvod, prečo ste nemohli kresliť textom. Píšem to v konštruktére, pretože viem, kedy je spustená aplikácia Silverlight.

public MainPage()
{
  InitializeComponent();

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

Napíšte proces kreslenia. V tomto prípade chceme len, aby XNA Framework nakreslil pozadie, keď dôjde k udalosti kreslenia.

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

Poďme spustiť ladenie.

デバッグ実行。

Keď ho spustíte, zobrazí sa tak, ako je to znázornené na obrázku. RenderMode: Unavailable neumožňuje hardvérové vykresľovanie, RenderModeReason:GPUAccelerationDisabled zakáže vykresľovanie GPU. Toto je problém na strane servera, takže ho musíte najskôr povoliť.

描画ができない

Otvorte súbor s názvom projektu <>TestPage.aspx z projektu ASP.NET hosťovaného v spustenom systéme Silverlight.

TestPage.aspx を開く

Pridajte "EnableGPUAcceleration" k parametru objektu a nastavte hodnotu na "true". To dáva strane servera povolenie pre túto aplikáciu Silverlight na používanie GPU. (V skutočnosti je to riešené klientskym spracovaním, ale keďže je to server, ktorý produkuje HTML, je to problém na strane servera.)

<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>

Ak sa ho pokúsite spustiť s týmto, bude to vyzerať ako obrázok. RenderModeReason je teraz SecurityBlocked. Je to preto, že kreslenie GPU nie je z bezpečnostných dôvodov predvolene povolené. Keďže ide o problém klienta, okrem spustenia ladenia musíte tiež nechať používateľa vykonať nasledujúce kroky, aby umožnil GPU kresliť.

RenderModeReason が SecurityBlocked に変化

Ak chcete povoliť vykresľovanie GPU, kliknite pravým tlačidlom myši na aplikáciu Silverlight a v ponuke vyberte položku Silverlight.

Silverlight を選択

V dialógovom okne, ktoré sa otvorí, vyberte kartu "Povolenia", vyberte príslušnú lokalitu a potom kliknite na tlačidlo "Povoliť".

アクセス許可

Keď je povolenie "Povoliť", kliknite na tlačidlo OK.

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

Ak ladíte počas ladenia, obnovenie prehliadača sa neprejaví, takže ak zatvoríte prehliadač a znova ho spustíte, uvidíte, že RenderMode sa stáva hardvérovou kresbou a je tiež povolená kresba pozadia XNA. Teraz môžete vytvárať programy XNA podľa obsahu svojho srdca.

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