Jelčić Tomislav, Vrević Armin
Direct3D za Windows Phone
Direct3D je podskup Directx platforme zaslužan za obradu 3D grafike na Windows sustavima. U daljnjem tijeku rada biti će objašnjen rad Direct3D-a kroz primjere na Windows Phone-u.
Windows Phone je mobilni operacijski sustav koji značajan rast ostvaruje od svoje verzije 7. Trenutna verzija operacijskog sustava je 8.1, s tim da je na 13.2.2015. izašao "tehnical preview" Windows 10 operacijskog sustava za mobilne uređaje. Kako je Windows Phone OS član Windows skupine operacijskih sustava, na njemu je moguće izrađivati DirectX aplikacije.
Ispod se nalaze korisni linkovi za izučavanje DirectX-a te Windows Phone OS-a
Predlošci aplikacija
Za kreiranje Windows Phone aplikacija sa Direct3D, postoje 3 načina kreiranja projekta. To su: XAML sa Direct3D, Direct3D sa XAML te Direct3D aplikacija
XAML sa Direct3D predložak se koristi u slučaju potrebe renderiranja 3D grafike unutar XAML korisničkog sučelja. S ove strane XAML daje element Drawing surface. To je kontrola na kojoj se prikazuje 3D grafika, te se ponaša kao i bilo koja druga kontrola. Ovakav tip daje najlošije performanse aplikacije.
Direct3D sa XAML predložak se koristi u onom slučaju kada oko nativne Direct3D aplikacije postoji slabi sloj XAML omotača. Ovakav tip se koristi kada se želi da igra posjeduje Live Tile ili neku drugu funkcionalnost posebnu za Windows Phone operacijski sustav.
Direct3D je predložak koji ne podržava pomoć XAML-a da kreira korisničko sučelje. Nudi najbolje performanse, a cijeli kod se piše u C++ -u. Svi objekti se iscrtavaju izravno na pozadinu ekrana uređaja. Isto tako se kontrolira životni ciklus aplikacije, kao i događaji.
Struktura koda aplikacije
Dvije najvažnije datoteke su Renderer.cpp u kojem se vrši samo iscrtavanje objekata, te promjena stanja objekata prema vremenu. Druga bitna datoteka je NazivProjekta.cpp, u kojoj se definiraju svi događaji za aplikaciju (dodir, pomicanje i slično), ali i definicije metoda koje su nužne za Windows Phone aplikacije (suspendiranje, zatvaranje), kako ne bi došlo do curenja u memoriji.
Pch.h Sadrži već iskompajlirane datoteke zaglavlja.
Direct3DBase.cpp Pomoćna klasa u kojoj se nalaze mogućnosti promjene orijentacije ekrana, te metode koje brinu o životnom ciklusu organizacije..
Assets Mapa u kojoj se nalaze sve fotografije, audio i video zapisi koji se koriste u aplikaciji.
External dependencies Dodatne datoteke zaglavlja.
Više o svemu navedenom otkrijte u primjeru aplikacije.
Osnova su 2 klase
- IFrameworkView implementacija
Služi kao provider za jedan view u aplikacijiImplementirane metode:
Initialize – Dodaje event handlere na metode stanja aplikacije(activated,resuming,suspending)Load
Run – Pokreće view i delegira renderiranje Direct3D objektu
SetWindow – Dodaje event handlere na metode stanja viewa(Pointeri,visibility..)
Uninitialize
OnVisibilityChanged, OnWindowClosed, OnPointerPressed, OnPointerMoved, OnPointerReleased
OnSuspending – Delocira resurse
OnResuming
- Direct3D base implementacija
Postavlja i renderira objekteUključuje potrebne DirectX toolkit klase
Implementirane metode:
CreateDeviceResources – Učitava teksture, kreira potrebne matrice i sl.CreateWindowSizeDependentResources
Render
Update