XNA / DirectX   otázka

XNA, DirectX

Dobrý den,

rad bych se zeptal na dvojici dotazů z problematiky XNA a také directX.

1. Jaký je vztah k HW u XNA a DirectX, a jak se řeší volání instrukce, která není podporována?

2. A existuje nějaké porovnání obou technologií?

Budu rád za veškeré odpovědi. Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

porovnání obou technologií není protože se jedná o jednu technologii. XNA je pouze nadstavba nad directX.

Doporučuji si přečíst serial věnovaný právě XNA na tomto webu, je tam mnoho užitečných informací. http://www.vbnet.cz/clanek--75-xna_2_0_v...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak už bylo řečeno, XNA je nadstavba nad DirectX (s přidanou podporou pro Xbox 360) a tedy s grafickou kartou komunikuje přes hardwarovou abstraktní vrstvu.

Volání instrukce která není podporována - jestli myslíte něco jako OpenGL Extensions tak to v DirectX není. Výrobci hardwaru musí striktně dodržovat specifikace konkrétní verze DirectX.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji za odpovědi.

PS. Otázku číslo 2 jsem spíše špatně formuloval, šlo mi o jakési porovnání toho co za problémy řeší sám XNA, oproti DirectX kde si programátor musí poradit sám. Ale už článek mi dal pár odpovědí, děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No je to asi tak že v XNA máte triedu dediacu z triedy Game a máte voľne k overridnutiu metódy LoadContent, Update a Draw.

Ak treba načítať textúry, efekty, modely a pod., XNA zavolá LoadContent, a Vy do premennej uložíte výsledok volania Content.Load, napr.

textura = Content.Load<Texture2D>("snow")

Ak treba prepočítať scénu, XNA zavolá Update a ako parameter dostanete informácie o ubehnutom čase.Ak treba vykresliť scénu, XNA zavolá Draw, taktiež s informáciami o čase. 2D scénu kreslíte pomocou SpriteBatch - t.j. žiadne Surface a podobné zložitosti.

V DirectX sám musíte rozhodnúť, či treba načítať grafiku , sám musíte rozhodnúť, či treba vykresliť scénu, sám si musíte zaobstarať časovanie pomocou System.Diagnostics.Stopwatch a zopár premenných.A ak chcete kresliť 2D scénu, treba vytvoriť Device, potom nastaviť cooperative level, následne vytvoriť dve surface pre front a back buffer(príp. jeden ak nechcete double buffering, to ale neodporúčam - môže to rozblikať obrazovku), pre každú textúru zase objekt Surface a preťahujete dáta medzi Surface.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

XNA je nesrovnatelně jednodušší než čistý DirectX, takže asi tak.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback