Programmi silumine XNA abil Silverlightis5

Lehekülg uuendatud :
Lehe loomise kuupäev :

Selgitusi selgitatakse projekti loomisest alates järjekorras, nii et palun jätke teile arusaadavad osad vahele.

Esmalt looge rakendus Silverlight. Valige menüüst Visual Studio suvand Fail, Uus, Projekt.

プロジェクトの新規作成

Valige rakendus Silverlight.

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

Veebisaitide majutamise osas määrake kindlasti sait, mida soovite hostida. Testlehed, mis luuakse automaatselt ainult Silverlightis silumisel, ei saa käivitada GPU-d kasutavaid XNA-programme. (See ei kehti aga testlehe käsitsi loomisel.)

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

Pärast projekti loomist paremklõpsake rakenduses Silverlight valikut Viited ja valige käsk Lisa viide.

参照の追加

Valige vasakul asuvast menüüst "Assembly" ja "Framework" ning kontrollige järgmisi elemente. (Ärge vajutage veel nuppu OK)

  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Graafikakaardid
  • Süsteem.Windows.Xna

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

Seejärel valige vasakul asuvast menüüst "Advance", kontrollige järgmisi elemente ja vajutage nuppu OK.

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

Oleme valinud XNA-programmi käivitamiseks vajaliku miinimumi, nii et valige vastavalt oma vajadustele viitamiseks kokkupanek.

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

Lisatakse viide koostule.

参照一覧

Järgmisena kohandame koodi. Seekord kirjeldatakse ainult minimaalset teavet, mis näitab, kas XNA programm töötas õigesti.

Avage oma Silverlighti rakenduses MainPage.xaml ja lisage järgmine kood:

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

DrawingSurface on ala, millele XNA programm joonistab. Käivitamisel toimub joonistamise sündmus korduvalt, seega kirjeldage seal joonistamisprotsessi. Seekord joonistan ainult taustavärvi, et saaksite näha, kas see töötab korralikult.

textBlockMessage'i kasutatakse teksti kuvamiseks, olenemata sellest, kas XNA-programm töötab korralikult või mitte. Seekord panen selle kinnitamiseks sisse, nii et mul pole seda tegelikus väljalaskes vaja.

Seejärel avage fail "MainPage.xaml.cs". Esiteks sorteerime kasutatavad osad. Silverlighti rakenduse nimeruum on määratud, seega muudame selle XNA jaoks. Kui te seda tegelikult loote, määratlege see vastavalt oma taotlusele.

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;

Järgmisena soovite käivitamisel kuvada praeguse segamisrežiimi ja põhjuse, miks te ei saanud teksti joonistada. Kirjutan selle konstruktorisse, sest tean, millal Silverlighti rakendus käivitatakse.

public MainPage()
{
  InitializeComponent();

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

Kirjutage joonistusprotsess. Sel juhul tahame lihtsalt, et XNA raamistik joonistaks joonistamissündmuse toimumisel tausta.

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

Käivitame silumise.

デバッグ実行。

Selle käivitamisel kuvatakse see joonisel näidatud viisil. RenderMode: Pole saadaval ei luba riistvara renderdamist, RenderModeReason:GPUAccelerationDisabled keelab GPU renderdamise. See on serveripoolne probleem, nii et peate selle kõigepealt lubama.

描画ができない

Avage < projekti nimi>TestPage.aspx fail Silverlighti käitatavast ASP.NET projektist.

TestPage.aspx を開く

Lisage objekti parameetrile "EnableGPUAcceleration" ja määrake väärtuseks "true". See annab serveripoolele loa selle Silverlighti rakenduse kasutamiseks GPU-d. (Tegelikult lahendatakse see klienditöötlusega, kuid kuna HTML-i väljastab server, on see serveripoolne probleem.)

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

Kui proovite seda sellega käivitada, näeb see välja nagu joonis. RenderModeReason on nüüd SecurityBlocked. Seda seetõttu, et GPU joonistamine pole turvakaalutlustel vaikimisi lubatud. Kuna tegemist on kliendi probleemiga, peate lisaks silumise käitamisele laskma kasutajal teha ka järgmised toimingud, et GPU saaks joonistada.

RenderModeReason が SecurityBlocked に変化

GPU renderdamise lubamiseks paremklõpsake rakendust Silverlight ja valige menüüst Silverlight.

Silverlight を選択

Avanevas dialoogis valige vahekaart "Load", valige sobiv sait ja seejärel klõpsake nuppu "Luba".

アクセス許可

Kui luba on "Luba", klõpsake nuppu OK.

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

Kui silute silumise ajal, ei jõustu brauseri värskendamine, nii et kui sulgete brauseri ja käivitate selle uuesti, näete, et RenderMode muutub riistvarajooniseks ja XNA taustajoonistus on samuti lubatud. Nüüd saate luua XNA-programme oma südame sisu järgi.

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