כדי לאתר באגים בתוכנית באמצעות XNA ב- Silverlight5

עודכן דף :
תאריך יצירת דף :

ההסברים מוסברים לפי סדר יצירת הפרויקט, אז אנא דלגו על החלקים שאתם מבינים.

ראשית, צור יישום Silverlight. מתפריט Visual Studio, בחר קובץ, חדש, פרוייקט.

プロジェクトの新規作成

בחר יישום Silverlight.

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

לגבי אירוח אתרי אינטרנט, הקפד לציין את האתר שברצונך לארח. דפי בדיקה שנוצרים באופן אוטומטי בעת איתור באגים ב- Silverlight בלבד אינם יכולים להפעיל תוכניות XNA המשתמשות ב- GPU. (עם זאת, הדבר אינו חל בעת יצירה ידנית של דף בדיקה).

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

לאחר יצירת הפרוייקט, לחץ באמצעות לחצן העכבר הימני על הפניות ביישום Silverlight ובחר הוסף הפניה.

参照の追加

בחר "הרכבה" ו "מסגרת" מהתפריט בצד שמאל ולבדוק את הפריטים הבאים. (אל תלחץ עדיין על כפתור אישור)

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

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

לאחר מכן, בחר "התקדמות" מהתפריט בצד שמאל, בדוק את הפריטים הבאים ולחץ על כפתור אישור.

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

בחרנו את המינימום הדרוש להפעלת תוכנית XNA, לכן בחר את ההרכבה להתייחסות בהתאם לצרכים שלך.

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

נוספה התייחסות לאסיפה.

参照一覧

לאחר מכן, נשנה את הקוד. הפעם, רק את המידע המינימלי שמראה אם התוכנית XNA עבד כראוי מתואר.

מיישום Silverlight, פתח את MainPage.xaml והוסף את הקוד הבא:

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

DrawingSurface הוא האזור שאליו משורטטת תוכנית XNA. בעת ביצועו, אירוע הציור מתרחש שוב ושוב, לכן תאר את תהליך הציור שם. הפעם, אני אצייר רק את צבע הרקע, כך שתוכל לראות אם זה עובד כמו שצריך.

textBlockMessage משמש להצגת טקסט אם תוכנית XNA פועלת כראוי או לא. הפעם אני מכניס את זה כדי לאשר את זה, אז אני לא צריך את זה במהדורה בפועל.

לאחר מכן פתח את הקובץ "MainPage.xaml.cs". ראשית, בואו למיין את חלקי השימוש. מרחב השמות עבור יישום Silverlight מצוין, ולכן נשנה אותו עבור XNA. בעת יצירתו בפועל, אנא הגדר אותו בהתאם ליישום שלך.

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;

לאחר מכן, בעת ההפעלה, ברצונך להציג את מצב המיזוג הנוכחי ואת הסיבה לכך שלא הצלחת לצייר טקסט. אני כותב את זה בבנאי כי אני יודע מתי היישום Silverlight מופעל.

public MainPage()
{
  InitializeComponent();

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

כתוב את תהליך הציור. במקרה זה, אנו רק רוצים שמסגרת XNA תצייר את הרקע כאשר אירוע הציור מתרחש.

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

בואו נריץ איתור באגים.

デバッグ実行。

כאשר תפעיל אותו, הוא יוצג כפי שמוצג באיור. RenderMode: לא זמין אינו מאפשר עיבוד חומרה, RenderModeReason:GPUAccelerationDisabled משבית את עיבוד המעבד הגרפי. זוהי בעיה בצד השרת, ולכן עליך להפעיל אותה תחילה.

描画ができない

פתח את הקובץ שם פרוייקט <>TestPage.aspx מהפרוייקט ASP.NET המתארח בהפעלה Silverlight.

TestPage.aspx を開く

הוסף את "EnableGPUAcceleration" לפרמטר של האובייקט והגדר את הערך ל- "true". פעולה זו מעניקה לצד השרת הרשאה עבור יישום Silverlight זה להשתמש ב- GPU. (למעשה, זה נפתר על ידי עיבוד לקוח, אבל מכיוון שזה השרת שפלט HTML, זו בעיה בצד השרת.)

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

אם תנסה להפעיל אותו עם זה, זה ייראה כמו הדמות. RenderModeReason הוא כעת SecurityBlocked. הסיבה לכך היא שציור GPU אינו מותר כברירת מחדל מטעמי אבטחה. מכיוון שמדובר בבעיית לקוח, בנוסף להפעלת איתור באגים, עליך גם לבקש מהמשתמש לבצע את השלבים הבאים כדי לאפשר ל- GPU לצייר.

RenderModeReason が SecurityBlocked に変化

כדי לאפשר עיבוד GPU, לחץ באמצעות לחצן העכבר הימני על היישום Silverlight ובחר Silverlight מהתפריט.

Silverlight を選択

בתיבת הדו-שיח שנפתחת, בחר בכרטיסייה "הרשאות", בחר את האתר המתאים ולאחר מכן לחץ על הלחצן "אפשר".

アクセス許可

כאשר ההרשאה היא "אפשר", לחץ על בסדר לחצן.

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

אם אתה מאתר באגים בעת איתור באגים, רענון הדפדפן אינו נכנס לתוקף, כך שאם תסגור את הדפדפן ותפעיל אותו שוב, תראה ש- RenderMode הופך לציור חומרה וציור רקע XNA מופעל גם הוא. עכשיו אתה יכול ליצור תוכניות XNA כאוות נפשך.

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