Ohjelman virheenkorjaus XNA:n avulla Silverlight5:ssä

Sivu päivitetty :
Sivun luontipäivämäärä :

Selitykset selitetään järjestyksessä projektin luomisesta, joten ohita ymmärtämäsi osat.

Luo ensin Silverlight-sovellus. Valitse Visual Studio -valikosta Tiedosto, Uusi, Projekti.

プロジェクトの新規作成

Valitse Silverlight-sovellus.

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

Mitä tulee verkkosivustojen isännöintiin, muista määrittää sivusto, jota haluat isännöidä. Testisivut, jotka luodaan automaattisesti virheenkorjauksen yhteydessä pelkästään Silverlightissa, eivät voi suorittaa grafiikkasuoritinta käyttäviä XNA-ohjelmia. (Tämä ei kuitenkaan päde, kun luot testisivun manuaalisesti.)

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

Kun projekti on luotu, napsauta Silverlight-sovelluksessa hiiren kakkospainikkeella Viitteet-kohtaa ja valitse Lisää viite.

参照の追加

Valitse vasemmalla olevasta valikosta "Assembly" ja "Framework" ja tarkista seuraavat kohdat. (Älä paina vielä OK-painiketta)

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

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

Valitse seuraavaksi vasemmalla olevasta valikosta "Advance", tarkista seuraavat kohdat ja paina OK-painiketta.

  • Microsoft.Xna.Framework.Graphics.Laajennukset
  • Microsoft.Xna.Framework.Math

Olemme valinneet vähimmäismäärän, joka tarvitaan XNA-ohjelman suorittamiseen, joten valitse kokoonpano, johon viitataan tarpeidesi mukaan.

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

Lisätään viittaus kokoonpanoon.

参照一覧

Seuraavaksi säädämme koodia. Tällä kertaa kuvataan vain vähimmäistiedot, jotka osoittavat, toimiko XNA-ohjelma oikein.

Avaa Silverlight-sovelluksessa MainPage.xaml ja lisää seuraava koodi:

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

DrawingSurface on alue, johon XNA-ohjelma piirtää. Kun se suoritetaan, Piirrä-tapahtuma tapahtuu toistuvasti, joten kuvaile piirustusprosessia siellä. Tällä kertaa piirrän vain taustavärin, jotta näet, toimiiko se oikein.

textBlockMessagea käytetään näyttämään tekstiä riippumatta siitä, toimiiko XNA-ohjelma oikein vai ei. Tällä kertaa laitan sen vahvistamaan sen, joten en tarvitse sitä varsinaisessa julkaisussa.

Avaa sitten "MainPage.xaml.cs" -tiedosto. Ensin lajitellaan käytetyt osat. Silverlight-sovelluksen nimiavaruus on määritetty, joten muutamme sen XNA:ksi. Kun luot sitä, määritä se hakemuksesi mukaan.

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;

Seuraavaksi, kun käynnistät, haluat näyttää nykyisen sekoitustilan ja syyn, miksi et voinut piirtää tekstiin. Kirjoitan sen konstruktoriin, koska tiedän, milloin Silverlight-sovellus käynnistetään.

public MainPage()
{
  InitializeComponent();

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

Kirjoita piirustusprosessi. Tässä tapauksessa haluamme vain, että XNA-kehys piirtää taustan, kun piirustustapahtuma tapahtuu.

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

Suoritetaan virheenkorjaus.

デバッグ実行。

Kun suoritat sen, se näkyy kuvan osoittamalla tavalla. RenderMode: Ei käytettävissä ei salli laitteiston hahmontamista, RenderModeReason:GPUAccelerationDisabled poistaa grafiikkasuorittimen hahmonnuksen käytöstä. Tämä on palvelinpuolen ongelma, joten sinun on ensin otettava se käyttöön.

描画ができない

Avaa <projektin nimi>testisivu.aspx tiedosto Silverlight-ajossa isännöidystä ASP.NET projektista.

TestPage.aspx を開く

Lisää "EnableGPUAcceleration" objektin parametriin ja aseta arvoksi "true". Tämä antaa palvelinpuolelle oikeuden käyttää grafiikkasuoritinta. (Itse asiassa se ratkaistaan asiakkaan käsittelyllä, mutta koska palvelin tuottaa HTML-koodia, se on palvelinpuolen ongelma.)

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

Jos yrität suorittaa sen tällä, se näyttää kuvalta. RenderModeReason on nyt SecurityBlocked. Tämä johtuu siitä, että grafiikkasuorittimen piirtäminen ei ole oletusarvoisesti sallittua turvallisuussyistä. Koska tämä on asiakasongelma, virheenkorjauksen suorittamisen lisäksi käyttäjän on myös suoritettava seuraavat vaiheet, jotta GPU voi piirtää.

RenderModeReason が SecurityBlocked に変化

Jos haluat sallia grafiikkasuorittimen hahmonnuksen, napsauta Silverlight-sovellusta hiiren kakkospainikkeella ja valitse valikosta Silverlight.

Silverlight を選択

Valitse avautuvassa valintaikkunassa "Käyttöoikeudet" -välilehti, valitse sopiva sivusto ja napsauta sitten "Salli" -painiketta.

アクセス許可

Kun lupa on "Salli", napsauta OK-painiketta.

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

Jos teet virheenkorjausta virheenkorjauksen aikana, selaimen päivittäminen ei tule voimaan, joten jos suljet selaimen ja suoritat sen uudelleen, näet, että RenderModesta tulee laitteistopiirustus ja myös XNA-taustapiirustus on käytössä. Nyt voit luoda XNA-ohjelmia sydämesi kyllyydestä.

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