Για να εντοπίσετε σφάλματα σε ένα πρόγραμμα χρησιμοποιώντας το XNA στο Silverlight5

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Οι εξηγήσεις εξηγούνται με τη σειρά από τη δημιουργία του έργου, οπότε παραλείψτε τα μέρη που καταλαβαίνετε.

Πρώτα, δημιουργήστε μια εφαρμογή Silverlight. Από το μενού του Visual Studio, επιλέξτε Αρχείο, Δημιουργία, Έργο.

プロジェクトの新規作成

Επιλέξτε Εφαρμογή Silverlight.

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

Όσον αφορά τη φιλοξενία τοποθεσιών Web, βεβαιωθείτε ότι έχετε καθορίσει την τοποθεσία που θέλετε να φιλοξενήσετε. Οι δοκιμαστικές σελίδες που δημιουργούνται αυτόματα κατά τον εντοπισμό σφαλμάτων μόνο στο Silverlight δεν μπορούν να εκτελέσουν προγράμματα XNA που χρησιμοποιούν την GPU. (Ωστόσο, αυτό δεν ισχύει όταν δημιουργείτε με μη αυτόματο τρόπο μια δοκιμαστική σελίδα.)

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

Μετά τη δημιουργία του έργου, κάντε δεξί κλικ στην επιλογή Αναφορές στην εφαρμογή Silverlight και επιλέξτε Προσθήκη αναφοράς.

参照の追加

Επιλέξτε "Συναρμολόγηση" και "Πλαίσιο" από το μενού στα αριστερά και ελέγξτε τα ακόλουθα στοιχεία. (Μην πατήσετε ακόμα το κουμπί OK)

  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Γραφικά
  • System.Windows.Xna

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

Στη συνέχεια, επιλέξτε "Προώθηση" από το μενού στα αριστερά, ελέγξτε τα ακόλουθα στοιχεία και πατήστε το κουμπί OK.

  • 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. Όταν εκτελείται, το συμβάν Draw εμφανίζεται επανειλημμένα, οπότε περιγράψτε τη διαδικασία σχεδίασης εκεί. Αυτή τη φορά, θα σχεδιάσω μόνο το χρώμα φόντου, ώστε να μπορείτε να δείτε αν λειτουργεί σωστά.

Το 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 Framework να σχεδιάσει το φόντο όταν συμβεί το συμβάν σχεδίασης.

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

Ας εκτελέσουμε τον εντοπισμό σφαλμάτων.

デバッグ実行。

Όταν το εκτελέσετε, θα εμφανιστεί όπως φαίνεται στην εικόνα. RenderMode: Δεν είναι διαθέσιμη δεν επιτρέπει την απόδοση υλικού, Το RenderModeReason:GPUAccelerationDisabled απενεργοποιεί την απόδοση GPU. Αυτό είναι ένα ζήτημα από την πλευρά του διακομιστή, οπότε πρέπει πρώτα να το ενεργοποιήσετε.

描画ができない

Ανοίξτε το < όνομα έργου>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 είναι πλέον αποκλεισμένο από την ασφάλεια. Αυτό συμβαίνει επειδή η σχεδίαση GPU δεν επιτρέπεται από προεπιλογή για λόγους ασφαλείας. Δεδομένου ότι πρόκειται για ζήτημα προγράμματος-πελάτη, εκτός από την εκτέλεση εντοπισμού σφαλμάτων, πρέπει επίσης να ζητήσετε από τον χρήστη να εκτελέσει τα ακόλουθα βήματα για να επιτρέψει στην GPU να σχεδιάσει.

RenderModeReason が SecurityBlocked に変化

Για να επιτρέψετε την απόδοση GPU, κάντε δεξί κλικ στην εφαρμογή Silverlight και επιλέξτε Silverlight από το μενού.

Silverlight を選択

Στο παράθυρο διαλόγου που ανοίγει, επιλέξτε την καρτέλα "Δικαιώματα", επιλέξτε τον κατάλληλο ιστότοπο και, στη συνέχεια, κάντε κλικ στο κουμπί "Να επιτρέπεται".

アクセス許可

Όταν η άδεια είναι "Να επιτρέπεται", κάντε κλικ στο ok κουμπί.

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

Εάν κάνετε εντοπισμό σφαλμάτων κατά τον εντοπισμό σφαλμάτων, η ανανέωση του προγράμματος περιήγησης δεν τίθεται σε ισχύ, οπότε αν κλείσετε το πρόγραμμα περιήγησης και το εκτελέσετε ξανά, θα δείτε ότι το RenderMode γίνεται σχέδιο υλικού και είναι επίσης ενεργοποιημένο το σχέδιο φόντου XNA. Τώρα μπορείτε να δημιουργήσετε προγράμματα XNA στο περιεχόμενο της καρδιάς σας.

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