Kombinácia technológií Silverlight a XNA pre hry a graficky náročné aplikácie


V prvej verzii SDK pre Windows Phone 7 bolo možné vyvíjať buď Silverlight aplikácie, ktoré využívajú XAML kód pre návrh používateľského prostredia a aplikačný kód pre obsluhu udalostí v jednom z .NET jazykom, alebo hry v XNA Studiu. SDK pre novú verziu “Mango” popri spomínaných možnostiach umožňuje aj kombináciu Silverlight a XNA technológií v jednej aplikácii.

Silverlight aplikáciu (typ projektu Windows Phone Application) budete vytvárať ak potrebujete použiť ovládacie prvky definované v XAML kóde a udalosťami riadený kód aplikačnej logiky, prípadne ak chcete použiť sofistikované prvky na prehrávanie multimédií, hlavne videa, či HTML web browser.

XNA Framework aplikáciu (typ projektu Windows Phone Game ) budete vytvárať, ak potrebujete hru, prípadne inú aplikáciu, ktorá vyžaduje výkonnú 2D alebo 3D grafiku, využívajúcu rendrovanie textúr a animáciu

Kombinovaná Silverlight + XNA Framework aplikácia (projekt typu Windows Phone Silverlight and XNA Application) kombinuje výhody obidvoch spomínaných typov aplikácií, takže tento typ projektu použijete vtedy ak potrebujete aj XAML ovládacie prvky aj výkonnú grafiku. Tieto technológie je možné kombinovať v rámci jednej aplikácie, ale na rôznych stránkach, takže napríklad aplikácia môže mať úvodnú stránku na báze technológie Silverlight a po kliknutí na ovládací prvok sa zobrazí nová stránka s výkonnou XNA grafikou.

Vytvorenie kombinovanej Silverlight + XNA Framework aplikácie si môžete vyskúšať na “prázdnom” projekte typu Windows Phone Silverlight and XNA Application, alebo na šablóne projektu jednoduchej grafickej aplikácie s pohyblivým štvorčekom. Táto šablóna má názov Phone 3D Graphics Application.

Vytvorte nový projekt typu Windows Phone 3D Graphics Application. Táto Silverlight aplikácia môže na niektorých svojich stránkach rendrovať XNA Framework kontext.

Hlavná XAML stránka (MainPage.xaml) obsahuje tlačidlo pre aktiváciu XNA stránky s grafikou (GamePage.xaml)

Táto stránka je prázdna, jej obsah sa generuje pomocou XNA Frameworku, takže v XAML kóde tejto stránky je okrem definovania XML menných priestorov a parametrov stránky len vysvetľujúci komentár

<!–No XAML content as the page is rendered entirely with XNA–>

Grafika je generovaná pomocou kódu (GamePage.xaml.cs). Scéna sa vykresľuje v procedúre

private void OnDraw(object sender, GameTimerEventArgs e)

{

SharedGraphicsDeviceManager.Current.GraphicsDevice.Clear(Color.Black);

spriteBatch.Begin();

spriteBatch.Draw(texture, spritePosition, Color.White);

spriteBatch.End();

}

 

Pri inicializácii aplikácie je vytvorený časovač a grafické operácie sa vykonávajú v obsluhe udalosti pri každom tiku časovača.

public GamePage()

{

InitializeComponent();

 

// Get the application’s ContentManager

content = (Application.Current as App).Content;

 

// Create a timer for this page

timer = new GameTimer();

timer.UpdateInterval = TimeSpan.FromTicks(33333);

timer.Update += OnUpdate;

timer.Draw += OnDraw;

}


private void OnUpdate(object sender, GameTimerEventArgs e)

{

UpdateSprite(e);

}

About Luboslav Lacko

Záujem o využitie moderných telefónov pre biznis a osobný život. Cloud computing, virtualizácia, vývoj aplikácií, business intelligence
This entry was posted in Všeobecné. Bookmark the permalink.

Pridaj komentár