Сравнение между XNA и DirectX (C #)

С точки зрения разработки ПК (исключая Xbox и Zune),

В чем разница между XNA и C # DirectX? Обладает ли C # DirectX значительным преимуществом перед XNA (с точки зрения скорости, лицензионных платежей и т. Д.)?

Как эти два сравниваются со скоростью неуправляемого C ++ DirectX?

Куда движется индустрия с точки зрения игрового программирования?

5.02.2009 07:08:42
4 ОТВЕТА
РЕШЕНИЕ

Если вы действительно хороши в написании неуправляемого кода, вы, вероятно, сможете написать более быстрый графический движок поверх DirectX. Тем не менее, для любителей XNA обладает достаточной производительностью как для разработки 2D, так и 3D игр.

Вот хорошее видео на 9 канале, где они запускают гоночную игру, построенную на XNA, на Xbox 360. Она хорошо работает даже в Full HD. Несколько игр XBox Live Arcade были разработаны сообществом XNA.

Что касается C # DirectX, насколько я помню, Managed DirectX, как он назывался, больше официально не поддерживается, поскольку XNA в основном заменяет его. Я могу ошибаться, это было очень давно, так как я смотрел на это.

Различия в производительности между XNA и Managed DirectX незначительны, поскольку, по сути, это одно и то же; У XNA просто есть несколько удобных битов, чтобы уменьшить объем стандартного кода, который вам нужно написать.

53
21.12.2009 17:57:18
  1. XNA и DirectX - это очень разные реализации для решения одной и той же проблемы - высокопроизводительного графически интенсивного программирования. Оба поддерживают 2D, 3D, аудио и сетевые компоненты. DirectX неуправляем, только если XNA является управляемым кодом.
  2. Существует управляемая реализация DirectX, которая является оболочкой для вызовов DirectX, но она не обновляется после текущей версии, поэтому я бы не стал беспокоиться об этом.
  3. XNA не является оболочкой для неуправляемого DirectX. Он использует части DirectX, но это не оболочка.
  4. Похоже, что индустрия все еще сильно настроена на неуправляемый DirectX - я говорю это потому, что все основные движковые компании все еще пишут на C ++, ASM и поддерживают DirectX (либо отдельно, либо в сочетании с OpenGL для версий Linux / Mac). Тот факт, что Microsoft «отбрасывает» управляемую оболочку DirectX и говорит людям, чтобы они предпочли использовать XNA, показывает, что именно они подталкивают управляемых разработчиков.
17
5.02.2009 08:29:40
Хм что? XNA - это обертка.
TraumaPony 5.02.2009 09:01:54
Нет, это не так - см. Xnarocks.spaces.live.com/blog/cns!CDFDED0A2593C8E1!172.entry, если вам нужно разъяснить это. Просто чтобы дать краткий пример обёртки 1: 1 функции отображения. Как конвейерный материал в XNA 2.0 отображается на DirectX? Это не так. Это не обертка.
Robert MacLean 5.02.2009 10:26:54
+1, XNA - это библиотека игр с управляемым кодом более высокого уровня, написанная поверх DirectX. Для многих вещей он даже не использует классы / структуры DirectX, но катит свои собственные, особенно матрицы, векторы и некоторые другие ...
Pop Catalin 6.02.2009 10:32:54

В Xna Game Studio основное внимание уделяется решению проблем, связанных с игрой, хотя я бы поставил под сомнение любого автора, который говорит, что производительность Xna Game Studio хуже, чем управляемого Direct X, без каких-либо приличных показателей.

Независимая группа за пределами MS создала проект под названием SlimDx - http://slimdx.mdxinfo.com/ Если вы пишете приложение, а не игру (что, я полагаю, вас не интересуют другие вопросы), тогда это может стоить принимая во внимание.

Индустрия все еще активно использует C ++ для игр, но были успешные выпуски игр, написанных в полностью управляемом коде с использованием XNA Game Studio в разделе игр сообщества XBox live, и выпущенных для самой XBox Arcade. Скоро должны появиться интересные статистические данные о том, сколько людей заработало на играх сообщества.

Многие игры с полной ценой используют C ++ для некоторых, но что-то вроде Lua для реальной игровой логики ... а Lua не славится невероятной скоростью!

C # имеет хорошую кривую обучения и используется программистами инструментов в отрасли - это был бы полезный язык, чтобы иметь под вашим поясом. C ++ был бы отличным языком, но он требует большей дисциплины для создания функционального кода - и дает кому-то новому гораздо больше возможностей для подвешивания. C # может динамически изменяться и выполнять такие вещи, как развертывание циклов во время выполнения, а не во время компиляции - хороший C # может быть таким же быстрым или быстрым, как хороший читаемый C ++, - но вы должны знать, как его использовать. В действительно тесных циклах C ++ и Assembler могут выиграть при определенных обстоятельствах. Часто в играх, использующих C ++, пользовательские распределители создаются со своими собственными стратегиями памяти, чтобы попытаться помочь фрагментации, вызванной обычными распределителями ... с такими вещами занимается CLR.

Если вы хотите приступить к разработке игр и выбрать язык (который, читая между строк, кажется, соответствует тому, что вы делаете с этой линией вопросов), то лучший язык для использования - тот, где у вас есть законченный проект, который будет показан в конце, будь то C ++, цель C, C #, Flash, Silverlight и т. д. По мере того, как языки меняются и становятся популярными, рекрутеры часто ищут проверенное владение различными языками - что может смягчить незнание тот, который они используют в настоящее время - и портфель выполненных работ сделает это.

31
5.02.2009 08:55:32
«Я бы усомнился в любом плакате, в котором говорилось бы, что производительность игровой студии Xna хуже, чем у управляемого direct x, и при этом не вижу приличных показателей». Я знаю, что спустя несколько лет, но этот пост по-прежнему получает много просмотров, вызовы отрисовки XNA примерно в 6 раз медленнее, чем вызовы SharpDX, и в 4 раза медленнее, чем вызовы slimdx
Levi H 28.06.2013 14:27:18
хорошо, что кажется приличным доказательством :) Хорошая ссылка @STRAIGHTOUTTACOMPTON
paulecoyote 25.07.2013 22:31:54
@STRAIGHTOUTTACOMPTON Примечание для googlers : обновление
MickyD 22.04.2015 07:27:32

На данный момент кажется, что Microsoft не планирует поддерживать XNA в приложениях в стиле Metro. Альтернативой XNA и ныне устаревшим «Managed DirectX» является SharpDx . Это может быть использовано для создания приложений в стиле Metro и было положительно оценено по сравнению с XNA, SlimDX и пакетом кода Windows API.

5
6.03.2012 16:48:19