Подтвердить что ты не робот

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

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

В чем разница между XNA и С# DirectX? Имеет ли С# DirectX значительное преимущество перед XNA (с точки зрения скорости, роялти и т.д.)?

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

  • XNA и DirectX - очень разные реализации для решения одной и той же проблемы - высокопроизводительное графическое интенсивное программирование. Оба поддерживают 2D, 3D, аудио и сетевые компоненты. DirectX не управляется только тогда, когда XNA управляется кодом.
  • Существует управляемая реализация DirectX, которая является оболочкой для вызовов DirectX, но которая не обновляется после текущей версии, поэтому я бы не стал ее беспокоить.
  • XNA не является оберткой неуправляемого DirectX. Он использует части DirectX, но это не оболочка.
  • Промышленность по-прежнему очень сильно настроена на неуправляемый DirectX - я говорю, что, поскольку все основные двигательные компании по-прежнему кодируются на С++, ASM и поддерживают DirectX (либо исключительно, либо совместно с OpenGL для версий Linux/Mac). Тот факт, что Microsoft "отбрасывает" управляемую оболочку DirectX и говорит людям скорее использовать XNA-шоу, в которых они нажимают управляемых разработчиков.

Ответ 4

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