Odpravljanje napak programa z uporabo XNA v silverlight5

Stran posodobljena :
Datum ustvarjanja strani :

Pojasnila so razložena z namenom izdelave projekta, zato preskočite dele, ki jih razumete.

Najprej ustvarite aplikacijo Silverlight. V meniju Visual Studio izberite Datoteka, Novo, Projekt.

プロジェクトの新規作成

Izberite Aplikacija Silverlight.

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

Glede gostovanja spletnih mest se prepričajte, da določite mesto, ki ga želite gostiti. Preskusne strani, ki se samodejno ustvarijo pri odpravljanju napak samo v silverlightu, ne morejo zagnati programov XNA, ki uporabljajo GPU. (Vendar to ne velja, če ročno ustvarite preskusno stran.)

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

Ko ustvarite projekt, z desno tipko miške kliknite Reference v aplikaciji Silverlight in izberite Dodaj sklic.

参照の追加

V meniju na levi izberite »Montaža« in »Okvir« in preverite naslednje elemente. (Ne pritiskajte gumba OK še)

  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Graphics
  • Sistem.Windows.Xna

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

Nato v meniju na levi izberite »Naprej«, preverite naslednje elemente in pritisnite gumb V redu.

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

Izbrali smo minimum, ki je potreben za zagon programa XNA, zato izberite montažo, da se sklicuje glede na vaše potrebe.

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

Doda se sklic na sestavo.

参照一覧

Nato bomo povile kodo. Tokrat so opisane le minimalne informacije, ki prikazujejo, ali je program XNA pravilno deloval.

V aplikaciji Silverlight odprite MainPage.xaml in dodajte to kodo:

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

DrawingSurface je področje, na ki ga črpa program XNA. Pri izvršitvi se dogodek risanje ponavlja, zato opišite postopek risbe tam. Tokrat bom narisal samo barvo ozadja, tako da boste lahko videli, če deluje pravilno.

textBlockMessage se uporablja za prikaz besedila, ali program XNA deluje pravilno ali ne. Tokrat ga dam v potrditev, tako da ga ne potrebujem v dejanski izdaji.

Nato odprite datoteko »MainPage.xaml.cs«. Najprej uredimo z uporabo delov. Določen je imenski prostor za aplikacijo Silverlight, zato ga bomo spremenili za XNA. Pri dejanski izdelavi ga določite v skladu z vašo aplikacijo.

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;

Nato, ko se zaženete, želite prikazati trenutni način mešanja in razlog, zakaj niste mogli risati v besedilu. Pišem ga v konstruktorju, ker vem, kdaj se začne aplikacija Silverlight.

public MainPage()
{
  InitializeComponent();

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

Napišite postopek risbe. V tem primeru želimo le, da okvir XNA nariše ozadje, ko pride do dogodka risanja.

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

Zaženimo odpravljanje napak.

デバッグ実行。

Ko ga zaženete, bo prikazan, kot je prikazano na sliki. RenderMode: Ni na voljo ne omogoča uprizarjanja strojne opreme, RenderModeReason:GPUAccelerationDisable disabled GPU uprizarjanje. To je težava na strani strežnika, zato jo morate najprej omogočiti.

描画ができない

Odprite < ime projekta>TestPage.aspx iz projekta ASP.NET, ki je gostitelj v teku Silverlight.

TestPage.aspx を開く

Parametru predmeta dodajte »EnableGPUAcceleration« in nastavite vrednost na »true«. S tem je na strani strežnika dovoljen ta silverlight program za uporabo GPU. (Pravzaprav je rešen z obdelavo odjemalca, ker pa je strežnik tisti, ki izdeluje HTML, je problem na strani strežnika.)

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

Če ga poskušaš voditi s tem, bo videti kot figura. RenderModeReason je zdaj Varnostnoblocked. To je zato, ker risba GPU ni privzeto dovoljena iz varnostnih razlogov. Ker gre za težavo odjemalca, morate poleg tega, da izvajate odpravljanje napak, uporabniku omogočiti, da izvede naslednje korake, da lahko GPU nariše.

RenderModeReason が SecurityBlocked に変化

Če želite omogočiti Upričanje GPU, z desno tipko miške kliknite aplikacijo Silverlight in v meniju izberite Silverlight.

Silverlight を選択

V pogovornem oknu, ki se odpre, izberite zavihek »Dovoljenja«, izberite ustrezno mesto in kliknite gumb »Dovoli«.

アクセス許可

Ko je dovoljenje »Dovoli«, kliknite gumb V redu.

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

Če odpravljate odpravljanje napak med odpravljanjem napak, osveževanje brskalnika ne začne učinkovati, tako da če zaprete brskalnik in ga znova zaženete, boste videli, da renderMode postane risba strojne opreme, omogočena pa je tudi risba ozadja XNA. Zdaj lahko ustvarite programe XNA po vsebini vašega srca.

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