Lai atkļūdotu programmu, izmantojot XNA Silverlight5

Lapa atjaunota :
Lapas izveides datums :

Paskaidrojumi tiek izskaidroti secībā no projekta izveides, tāpēc, lūdzu, izlaidiet saprotamās daļas.

Vispirms izveidojiet Silverlight lietojumprogrammu. Visual Studio izvēlnē izvēlieties File, New, Project.

プロジェクトの新規作成

Atlasiet Silverlight lietojumprogramma.

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

Attiecībā uz tīmekļa vietņu mitināšanu noteikti norādiet vietni, kuru vēlaties viesot. Testējot lapas, kas tiek automātiski ģenerētas, atkļūdojot tikai Silverlight, nevar palaist XNA programmas, kas izmanto GPU. (Tomēr tas neattiecas uz gadījumiem, kad manuāli izveidojat testa lapu.)

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

Kad projekts ir izveidots, lietojumprogrammā Silverlight ar peles labo pogu noklikšķiniet uz Atsauces un atlasiet Pievienot atsauci.

参照の追加

Kreisās puses izvēlnē atlasiet "Montāža" un "Ietvars" un pārbaudiet šādus vienumus. (Vēl nespiediet pogu Labi (OK))

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

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

Pēc tam kreisās puses izvēlnē atlasiet "Advance", pārbaudiet šādus vienumus un nospiediet pogu OK.

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

Mēs esam izvēlējušies minimumu, kas nepieciešams, lai palaistu XNA programmu, tāpēc atlasiet montāžu atbilstoši jūsu vajadzībām.

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

Pievieno atsauci uz montāžu.

参照一覧

Tālāk mēs pielāgosim kodu. Šoreiz ir aprakstīta tikai minimālā informācija, kas parāda, vai XNA programma darbojās pareizi.

Silverlight lietojumprogrammā atveriet MainPage.xaml un pievienojiet šādu kodu:

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

DrawingSurface ir apgabals, uz kuru balstās XNA programma. Kad tas tiek izpildīts, notikums Draw notiek atkārtoti, tāpēc aprakstiet zīmēšanas procesu tur. Šoreiz es zīmēšu tikai fona krāsu, lai jūs varētu redzēt, vai tā darbojas pareizi.

textBlockMessage tiek izmantots, lai parādītu tekstu neatkarīgi no tā, vai XNA programma darbojas pareizi vai nē. Šoreiz es to ievietoju, lai to apstiprinātu, tāpēc man tas nav vajadzīgs faktiskajā laidienā.

Pēc tam atveriet failu "MainPage.xaml.cs". Pirmkārt, sakārtosim lietošanas daļas. Silverlight lietojumprogrammas nosaukumvieta ir norādīta, tāpēc mēs to mainīsim pret XNA. Faktiski to veidojot, lūdzu, definējiet to atbilstoši savam pieteikumam.

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;

Pēc tam, kad sākat darbu, vēlaties parādīt pašreizējo sajaukšanas režīmu un iemeslu, kāpēc nevarējāt zīmēt tekstu. Es to rakstu konstruktorā, jo zinu, kad tiek palaista Silverlight lietojumprogramma.

public MainPage()
{
  InitializeComponent();

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

Uzrakstiet zīmēšanas procesu. Šajā gadījumā mēs vienkārši vēlamies, lai XNA ietvars zīmētu fonu, kad notiek zīmēšanas notikums.

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

Palaidīsim atkļūdošanu.

デバッグ実行。

Palaižot to, tas tiks parādīts, kā parādīts attēlā. RenderMode: Nav pieejams neļauj veikt aparatūras renderēšanu, RenderModeReason:GPUAccelerationDisabled atspējo GPU renderēšanu. Šī ir servera puses problēma, tāpēc vispirms tā ir jāiespējo.

描画ができない

Atveriet < projekta nosaukumu >TestPage.aspx failu no ASP.NET projekta, kas viesots Silverlight palaist.

TestPage.aspx を開く

Objekta parametram pievienojiet "EnableGPUAcceleration" un iestatiet vērtību uz "true". Tas dod servera puses atļauju šai Silverlight lietojumprogrammai izmantot GPU. (Faktiski tas tiek atrisināts ar klienta apstrādi, bet, tā kā tas ir serveris, kas izvada HTML, tā ir servera puses problēma.)

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

Ja jūs mēģināt to palaist ar šo, tas izskatīsies kā skaitlis. RenderModeReason tagad ir SecurityBlocked. Tas ir tāpēc, ka GPU zīmēšana pēc noklusējuma nav atļauta drošības apsvērumu dēļ. Tā kā šī ir klienta problēma, papildus atkļūdošanas veikšanai jums ir arī jāpieprasa, lai lietotājs veiktu šādas darbības, lai ļautu GPU izdarīt.

RenderModeReason が SecurityBlocked に変化

Lai atļautu GPU atveidi, ar peles labo pogu noklikšķiniet uz lietojumprogrammas Silverlight un izvēlnē izvēlieties Silverlight.

Silverlight を選択

Atvērtajā dialoglodziņā atlasiet cilni "Atļaujas", atlasiet atbilstošo vietni un pēc tam noklikšķiniet uz pogas "Atļaut".

アクセス許可

Kad atļauja ir "Atļaut", noklikšķiniet uz pogas Labi.

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

Ja atkļūdošanas laikā atkļūdojat, pārlūkprogrammas atsvaidzināšana nestājas spēkā, tādēļ, ja aizverat pārlūkprogrammu un palaižat to vēlreiz, jūs redzēsiet, ka RenderMode kļūst par aparatūras zīmējumu un ir iespējots arī XNA fona zīmējums. Tagad jūs varat izveidot XNA programmas pēc sirds satura.

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