Để gỡ lỗi một chương trình bằng cách sử dụng XNA trong Silverlight5

Trang Cập Nhật :
Ngày tạo trang :

Các giải thích được giải thích theo thứ tự từ việc tạo ra dự án, vì vậy vui lòng bỏ qua các phần bạn hiểu.

Trước tiên, hãy tạo một ứng dụng Silverlight. Từ menu Visual Studio, chọn Tệp, Mới, Dự án.

プロジェクトの新規作成

Chọn Ứng dụng Silverlight.

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

Về việc lưu trữ các trang Web, hãy chắc chắn chỉ định trang web mà bạn muốn lưu trữ. Các trang thử nghiệm được tạo tự động khi gỡ lỗi trong Silverlight một mình không thể chạy các chương trình XNA sử dụng GPU. (Tuy nhiên, điều này không áp dụng khi bạn tạo trang thử nghiệm theo cách thủ công.)

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

Sau khi dự án được tạo, bấm chuột phải vào Tham chiếu trong ứng dụng Silverlight và chọn Thêm Tham chiếu.

参照の追加

Chọn "Lắp ráp" và "Khung" từ menu bên trái và kiểm tra các mục sau. (Chưa nhấn nút OK)

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

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

Tiếp theo, chọn "Advance" từ menu bên trái, kiểm tra các mục sau và nhấn nút OK.

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

Chúng tôi đã chọn mức tối thiểu cần thiết để chạy chương trình XNA, vì vậy hãy chọn lắp ráp để tham khảo theo nhu cầu của bạn.

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

Một tham chiếu đến lắp ráp được thêm vào.

参照一覧

Tiếp theo, chúng ta sẽ tinh chỉnh code. Lần này, chỉ có thông tin tối thiểu cho thấy chương trình XNA có hoạt động chính xác hay không được mô tả.

Từ ứng dụng Silverlight của bạn, mở MainPage.xaml và thêm mã sau:

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

DrawingSurface là khu vực mà chương trình XNA vẽ đến. Khi được thực hiện, sự kiện Bốc thăm xảy ra lặp đi lặp lại, vì vậy hãy mô tả quá trình vẽ ở đó. Lần này, tôi sẽ chỉ vẽ màu nền để bạn có thể xem nó có hoạt động bình thường hay không.

textBlockMessage được sử dụng để hiển thị văn bản cho dù một chương trình XNA có hoạt động bình thường hay không. Lần này tôi đưa nó vào để xác nhận nó, vì vậy tôi không cần nó trong bản phát hành thực tế.

Sau đó mở tệp "MainPage.xaml.cs". Đầu tiên, hãy sắp xếp các bộ phận sử dụng. Không gian tên cho ứng dụng Silverlight được chỉ định, vì vậy chúng tôi sẽ thay đổi nó cho XNA. Khi thực sự tạo ra nó, vui lòng xác định nó theo ứng dụng của bạn.

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;

Tiếp theo, khi bạn khởi động, bạn muốn hiển thị chế độ hòa trộn hiện tại và lý do tại sao bạn không thể vẽ bằng văn bản. Tôi viết nó trong hàm xây dựng vì tôi biết khi nào ứng dụng Silverlight được khởi chạy.

public MainPage()
{
  InitializeComponent();

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

Viết quá trình vẽ. Trong trường hợp này, chúng tôi chỉ muốn XNA Framework vẽ nền khi sự kiện vẽ xảy ra.

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

Hãy chạy gỡ lỗi.

デバッグ実行。

Khi bạn chạy nó, nó sẽ được hiển thị như trong hình. RenderMode: Không khả dụng không cho phép kết xuất phần cứng, RenderModeReason:GPUAccelerationDisabled vô hiệu hóa kết xuất GPU. Đây là sự cố phía máy chủ, vì vậy trước tiên bạn cần kích hoạt nó.

描画ができない

Mở tệp < tên dự án>TestPage.aspx từ dự án ASP.NET được lưu trữ trong quá trình chạy Silverlight.

TestPage.aspx を開く

Thêm "EnableGPUAcceleration" vào tham số của đối tượng và đặt giá trị thành "true". Điều này cho phép phía máy chủ cho phép ứng dụng Silverlight này sử dụng GPU. (Trên thực tế, nó được giải quyết bằng cách xử lý máy khách, nhưng vì nó là máy chủ xuất ra HTML, nên đó là một vấn đề phía máy chủ.)

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

Nếu bạn cố gắng chạy nó với điều này, nó sẽ trông giống như con số. RenderModeReason bây giờ là SecurityBlocked. Điều này là do vẽ GPU không được phép theo mặc định vì lý do bảo mật. Vì đây là sự cố máy khách, ngoài việc chạy gỡ lỗi, bạn cũng cần yêu cầu người dùng thực hiện các bước sau để cho phép GPU vẽ.

RenderModeReason が SecurityBlocked に変化

Để cho phép kết xuất GPU, hãy nhấp chuột phải vào ứng dụng Silverlight và chọn Silverlight từ menu.

Silverlight を選択

Trong hộp thoại mở ra, chọn tab "Quyền", chọn trang web thích hợp, sau đó nhấp vào nút "Cho phép".

アクセス許可

Khi quyền là "Cho phép", hãy nhấp vào đồng ý cái nút.

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

Nếu bạn đang gỡ lỗi trong khi gỡ lỗi, làm mới trình duyệt không có hiệu lực, vì vậy nếu bạn đóng trình duyệt và chạy lại, bạn sẽ thấy rằng RenderMode trở thành bản vẽ phần cứng và bản vẽ nền XNA cũng được bật. Bây giờ bạn có thể tạo các chương trình XNA theo nội dung trái tim của bạn.

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