برای اشکال زدایی یک برنامه با استفاده از XNA در Silverlight5

صفحه به روز شده :
تاریخ ایجاد صفحه :

توضیحات به ترتیب از ایجاد پروژه توضیح داده شده است، بنابراین لطفا از قطعاتی که درک می کنید بگذرید.

اول ، ایجاد یک برنامه Silverlight. از منوی Visual Studio، File, New, Project را انتخاب کنید.

プロジェクトの新規作成

برنامه Silverlight را انتخاب کنید.

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

با توجه به میزبانی وب سایت ها، حتماً سایت مورد نظر خود را که می خواهید میزبانی کنید مشخص کنید. صفحات تست که به طور خودکار تولید می شوند در هنگام اشکال زدایی در Silverlight به تنهایی نمی توانند برنامه های XNA را اجرا کنند که از GPU استفاده می کنند. (با این حال، این کار زمانی که شما به صورت دستی یک صفحه آزمون ایجاد می کنید اعمال نمی شود.)

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

پس از ایجاد پروژه، مراجع در برنامه Silverlight کلیک راست کرده و Add Reference را انتخاب کنید.

参照の追加

"مجمع" و "چارچوب" را از منوی سمت چپ انتخاب کنید و موارد زیر را بررسی کنید. (هنوز دکمه OK را فشار نمی دهید)

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

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

بعد، "پیشرفت" را از منوی سمت چپ انتخاب کنید، موارد زیر را بررسی کنید و دکمه OK را فشار دهید.

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

ما حداقل لازم برای اجرای یک برنامه XNA را انتخاب کرده اند، بنابراین مجمع را انتخاب کنید تا با توجه به نیازهای شما به مرجع.

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

اشاره ای به مجمع اضافه می شود.

参照一覧

بعدش، کد رو نیشگون می کنیم. این بار تنها حداقل اطلاعاتی که نشان می دهد آیا برنامه XNA درست کار کرده است یا خیر، شرح داده می شود.

از نرم افزار Silverlight خود، MainPage.© را باز کنید و کد زیر را اضافه کنید:

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

DrawingSurface منطقه ای است که برنامه XNA به آن ترسیم می کند. هنگامی که اجرا می شود، رویداد Draw بارها رخ می دهد، بنابراین فرایند نقاشی را در آنجا توصیف کنید. این بار، من فقط رنگ پس زمینه رسم به طوری که شما می توانید ببینید که آیا آن را به درستی کار می کند.

textBlockMessage برای نمایش متن استفاده می شود که آیا یک برنامه XNA درست کار می کند یا نه. این بار من آن را در قرار دادن آن را تایید، بنابراین من آن را در انتشار واقعی نیاز ندارد.

سپس پرونده "MainPage..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: Unavailable اجازه رندر سخت افزاری را نمی دهد، RenderModeReason:GPUAccelerationDisabled رندر GPU را غیرفعال می کند. این یک مسئله سمت سرور است، بنابراین شما باید ابتدا آن را فعال کنید.

描画ができない

باز کردن < نام پروژه >TestPage.aspx از پروژه ASP.NET میزبانی شده در اجرای Silverlight.

TestPage.aspx を開く

افزودن "EnableGPUAcceleration" به پارامتر شیء و تنظیم مقدار به "درست". این اجازه سمت سرور برای این برنامه 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 به دلایل امنیتی به طور پیش فرض مجاز نیست. از آنجا که این یک مسئله مشتری است، علاوه بر در حال اجرا debugging، شما همچنین نیاز به کاربر انجام مراحل زیر اجازه می دهد تا GPU به قرعه کشی.

RenderModeReason が SecurityBlocked に変化

برای اجازه دادن به رندر GPU، روی برنامه Silverlight راست کلیک کنید و Silverlight را از منو انتخاب کنید.

Silverlight を選択

در محاوره ای که باز می شود، زبانه "مجوزها" را انتخاب کنید، سایت مناسب را انتخاب کنید و سپس روی دکمه "اجازه" کلیک کنید.

アクセス許可

هنگامی که اجازه "اجازه" است، روی دکمه OK کلیک کنید.

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

اگر شما در حال اشکال زدایی در حالی که اشکال زدایی, طراوت مرورگر اثر نمی کند, بنابراین اگر شما بستن مرورگر و اجرای آن را دوباره, شما خواهید دید که RenderMode تبدیل به طراحی سخت افزار و طراحی پس زمینه XNA نیز فعال است. حالا شما می توانید برنامه های XNA را به محتوای قلب خود ایجاد کنید.

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