Porównanie XNA i DirectX (C#)

W kategoriach rozwoju PC (z wyłączeniem Xbox i Zune),

Jaka jest różnica między XNA a c# DirectX? Czy c # DirectX ma znaczącą przewagę nad XNA (pod względem szybkości, opłat licencyjnych itp.)?

Jak te dwa w porównaniu z szybkością niezarządzanego c++ DirectX?

Dokąd zmierza branża w zakresie programowania gier?

Author: yxk, 2009-02-05

4 answers

Jeśli jesteś naprawdę dobry w pisaniu kodu niezarządzanego, prawdopodobnie będziesz w stanie napisać szybszy silnik graficzny na DirectX. Jednak dla hobbystów XNA ma mnóstwo wydajności, zarówno dla rozwoju gier 2D, jak i 3D.

Oto dobry film Channel 9 , gdzie prowadzą grę wyścigową zbudowaną przez XNA na Xbox 360. Działa dobrze nawet w full HD. Niektóre z gier XBox Live Arcade zostały opracowane przez społeczność XNA.

Jeśli chodzi o c # DirectX, jak Przypominam sobie, zarządzany DirectX, jak to się nazywało, nie jest już oficjalnie wspierany, ponieważ XNA zasadniczo go zastępuje. Mogłem się mylić, dawno na to nie patrzyłem.

Różnice w wydajności są znikome między XNA a Managed DirectX, ponieważ w istocie są to to samo; XNA ma tylko kilka wygodnych bitów, aby zmniejszyć ilość kodu, który musisz napisać.

 52
Author: Soviut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-21 17:57:18

Rzeczy XNA Game Studio koncentruje się na rozwiązywaniu problemów z gra centric, choć chciałbym zakwestionować każdy plakat, który mówi, że wydajność rzeczy XNA game studio jest gorsza niż zarządzane direct X bez widząc jakieś przyzwoite metryki.

Niezależna grupa spoza MS stworzyła projekt o nazwie SlimDx- http://slimdx.mdxinfo.com / Jeśli piszesz aplikację, a nie grę (czego oczekuję od innych pytań), to może warto biorąc pod uwagę.

Branża nadal mocno wykorzystuje C++ do tworzenia wnętrzności gier, ale udane wydania gier napisanych w całkowicie zarządzanym kodzie przy użyciu XNA Game Studio w sekcji gier społecznościowych XBox live i wydanych na XBox Arcade. Wkrótce powinny pojawić się ciekawe statystyki dotyczące tego, ile ludzie zarobili na grach społecznościowych.

Wiele pełnych gier używa C++ dla niektórych, ale coś w rodzaju Lua dla rzeczywistej logiki gry... a Lua nie jest znany z niesamowitej prędkości!

C # ma dobrą krzywą uczenia się i jest używany przez programistów narzędzi w branży - byłoby przydatnym językiem, aby mieć pod ręką. C++ byłby świetnym językiem, ale wymaga większej dyscypliny, aby tworzyć kod funkcjonalny - i daje komuś nowemu o wiele więcej liny, aby się powiesić. C# może dynamicznie się zmieniać i robić rzeczy takie jak rozwijanie pętli w czasie wykonywania, a nie kompilacji - dobry C# może być równie szybki lub szybszy niż dobry czytelny C++ - ale ty muszę wiedzieć, jak go używać. W naprawdę ciasnych pętlach C++ i Assembler mogą wygrać w pewnych okolicznościach. Często w grach wykorzystujących C++, niestandardowe alokatory są tworzone z własnymi strategiami pamięci, aby spróbować pomóc fragmentacji spowodowanej przez normalne alokatory... tego typu rzeczy zajmuje się CLR w. Net/C# i tak długo jak programujesz do garbage collectors (tak samo jak z własną implementacją C++) to nie musisz się martwić o tak niski poziom implementacji w .Net.

Jeśli szukasz, aby dostać się do rozwoju gry i decydując się na język (który, czytanie między wierszami wydaje się być, gdzie idziesz z tej linii pytań) to najlepszym językiem do użycia jest ten, w którym masz gotowy projekt, aby pokazać na końcu, czy to C++, objective C, C#, Flash, Silverlight, itp. Ponieważ języki zmieniają się i wychodzą z mody, rekruterzy często szukają sprawdzonego opanowania różnych języki-które mogłyby złagodzić nieznajomość tego, którego obecnie używają - i portfolio ukończonych prac zrobiłoby to.

 31
Author: paulecoyote,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 08:55:32
  1. XNA i DirectX to bardzo różne implementacje, które rozwiązują ten sam problem - wysokowydajne graficzne programowanie intensywne. Oba obsługują komponenty 2D, 3D, audio i sieciowe. DirectX jest niezarządzany tylko wtedy, gdy zarządzany jest kod XNA.
  2. istnieje zarządzana implementacja DirectX, która jest opakowaniem wokół wywołań DirectX, ale nie jest aktualizowana po bieżącym wydaniu, więc nie zawracałbym sobie tym głowy.
  3. XNA nie jest opakowaniem wokół niezarządzanego DirectX. Informatyka używa części DirectX, ale nie jest to opakowanie.
  4. branża nadal wydaje się bardzo nastawiona na niezarządzany DirectX-mówię to, ponieważ wszystkie główne firmy programistyczne nadal kodują w C++, ASM i wspierają DirectX (wyłącznie lub w połączeniu z OpenGL dla wersji Linux/Mac). Fakt, że Microsoft "upuszcza" wrapper zarządzany DirectX i mówi ludziom, aby raczej używali XNA, pokazuje, że właśnie tam naciskają zarządzanych deweloperów.
 17
Author: Robert MacLean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 08:29:40

W tej chwili wydaje się, że Microsoft nie planuje wspierać XNA w aplikacjach Metro style. Alternatywą dla XNA i obecnie przestarzałego "Managed DirectX" jest SharpDx . To może być wykorzystane do tworzenia aplikacji w stylu Metro i został korzystnie benchmarked przeciwko XNA, SlimDX i Windows API code pack.

 5
Author: Dave Maff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-06 16:48:19