Untuk menyahpepijat program menggunakan XNA dalam Silverlight5

Laman dikemaskini :
Tarikh penciptaan halaman :

Penjelasan dijelaskan agar dari penciptaan projek, jadi sila langkau bahagian yang anda fahami.

Mula-mula, cipta aplikasi Silverlight. Daripada menu Visual Studio, pilih Fail, Baru, Projek.

プロジェクトの新規作成

Pilih Aplikasi Silverlight.

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

Mengenai laman web hosting, pastikan anda menentukan laman web yang anda mahu menjadi tuan rumah. Uji halaman yang dijana secara automatik apabila menyahpepijat dalam Silverlight sahaja tidak boleh menjalankan program XNA yang menggunakan GPU. (Walau bagaimanapun, ini tidak terpakai apabila anda membuat halaman ujian secara manual.)

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

Selepas projek dicipta, klik kanan Rujukan dalam aplikasi Silverlight dan pilih Tambah Rujukan.

参照の追加

Pilih "Perhimpunan" dan "Rangka Kerja" dari menu di sebelah kiri dan semak item berikut. (Jangan tekan butang OK lagi)

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

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

Seterusnya, pilih "Maju" dari menu di sebelah kiri, semak item berikut, dan tekan butang OK.

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

Kami telah memilih minimum yang diperlukan untuk menjalankan program XNA, jadi pilih pemasangan untuk merujuk mengikut keperluan anda.

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

Rujukan kepada perhimpunan ditambah.

参照一覧

Seterusnya, kami akan mengubah kod tersebut. Kali ini, hanya maklumat minimum yang menunjukkan sama ada program XNA berfungsi dengan betul diterangkan.

Daripada aplikasi Silverlight anda, buka MainPage.xaml dan tambah kod berikut:

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

DrawingSurface adalah kawasan yang program XNA menarik. Apabila dilaksanakan, peristiwa Cabutan berlaku berulang kali, jadi terangkan proses lukisan di sana. Kali ini, saya hanya akan melukis warna latar belakang supaya anda dapat melihat sama ada ia berfungsi dengan baik.

textBlockMessage digunakan untuk memaparkan teks sama ada program XNA berfungsi dengan betul atau tidak. Kali ini saya memasukkannya untuk mengesahkannya, jadi saya tidak memerlukannya dalam keluaran sebenar.

Kemudian buka fail "MainPage.xaml.cs". Mula-mula, mari kita selesaikan bahagian menggunakan. Ruang nama untuk aplikasi Silverlight ditentukan, jadi kami akan mengubahnya untuk XNA. Apabila benar-benar menciptanya, sila tentukannya mengikut permohonan anda.

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;

Seterusnya, apabila anda memulakan, anda ingin memaparkan mod adunan semasa dan sebab mengapa anda tidak dapat melukis teks. Saya menulisnya dalam pembina kerana saya tahu bila aplikasi Silverlight dilancarkan.

public MainPage()
{
  InitializeComponent();

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

Tulis proses lukisan. Dalam kes ini, kami hanya mahu Rangka Kerja XNA melukis latar belakang apabila peristiwa lukisan berlaku.

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

Mari kita jalankan penyahpepijatan.

デバッグ実行。

Apabila anda menjalankannya, ia akan dipaparkan seperti yang ditunjukkan dalam gambar. RenderMode: Tidak tersedia tidak membenarkan pemaparan perkakasan, RenderModeReason:GPUAccelerationDisabled melumpuhkan pemaparan GPU. Ini adalah isu pihak pelayan, jadi anda perlu mendayakannya terlebih dahulu.

描画ができない

Buka fail < nama projek>TestPage.aspx daripada projek ASP.NET yang dihoskan dalam larian Silverlight.

TestPage.aspx を開く

Tambah "EnableGPUAcceleration" pada parameter objek dan tetapkan nilai kepada "true". Ini memberikan kebenaran sisi pelayan untuk aplikasi Silverlight ini untuk menggunakan GPU. (Sebenarnya, ia diselesaikan dengan pemprosesan pelanggan, tetapi kerana pelayan yang mengeluarkan HTML, ia adalah masalah pihak pelayan.)

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

Jika anda cuba menjalankannya dengan ini, ia akan kelihatan seperti angka itu. RenderModeReason kini SecurityBlocked. Ini kerana lukisan GPU tidak dibenarkan secara lalai atas sebab keselamatan. Oleh kerana ini adalah isu pelanggan, selain menjalankan penyahpepijatan, anda juga perlu meminta pengguna melakukan langkah-langkah berikut untuk membolehkan GPU menarik.

RenderModeReason が SecurityBlocked に変化

Untuk membenarkan persembahan GPU, klik kanan aplikasi Silverlight dan pilih Silverlight daripada menu.

Silverlight を選択

Dalam dialog yang terbuka, pilih tab "Kebenaran", pilih tapak yang sesuai, dan kemudian klik butang "Benarkan".

アクセス許可

Apabila kebenaran adalah "Benarkan", klik okey butang.

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

Jika anda menyahpepijat semasa menyahpepijat, menyegarkan penyemak imbas tidak berkuat kuasa, jadi jika anda menutup penyemak imbas dan menjalankannya semula, anda akan melihat bahawa RenderMode menjadi lukisan perkakasan dan lukisan latar belakang XNA juga didayakan. Kini anda boleh membuat program XNA untuk kandungan hati anda.

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