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

Я тоже пытался понять это, потому что увидел, что Google движется к замене своей виртуальной машины Dalvik (по существу другой виртуальной машины Java, такой как HotSpot), с Android Run Time (ART), которая является компилятором AOT, но Java обычно использует HotSpot, который является JIT-компилятором. По-видимому, ARM ~ 2x быстрее, чем Dalvik ... поэтому я подумал: «Почему Java не использует AOT?». В любом случае, из того, что я могу собрать, основное различие заключается в том, что JIT использует адаптивную оптимизацию во время выполнения, которая (например) позволяет ТОЛЬКО те части байт-кода, которые выполняются часто, чтобы скомпилироваться в собственный код; тогда как AOT компилирует весь исходный код в собственный код, а код меньшей суммы работает быстрее кода большего количества. Я должен представить, что большинство приложений для Android состоят из небольшого количества кода, поэтому в среднем имеет смысл скомпилировать весь исходный код с помощью собственного кода AOT и избежать накладных расходов, связанных с интерпретацией / оптимизацией.

50
задан yxk 5 February 2009 в 07:08
поделиться

3 ответа

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

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

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

различия в производительности незначительны между XNA и Управляемым DirectX с тех пор, в сущности они - то же самое; XNA просто имеет несколько битов удобства для сокращения объема шаблона, кода Вас, должен записать.

53
ответ дан Ryan Lundy 7 November 2019 в 20:46
поделиться

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

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

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

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

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

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

31
ответ дан paulecoyote 7 November 2019 в 20:46
поделиться
  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
ответ дан Robert MacLean 7 November 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: