Требуется ли для моего варианта использования XNA или можно использовать silverlight (Windows Phone 7)? - PullRequest
2 голосов
/ 10 декабря 2010


Я новичок в программировании .net в целом и в частности в Windows Phone 7 (я - Java-парень).
Я пишу приложение для семинара по Windows Phone 7 в моем университете, в котором естьрежим полу-дополненной реальности.(частично потому, что win-pho7 не разрешает подачу с камеры).
В основном мне потребуется визуализировать наложение различных изображений на фоне (которое должно было быть с камеры) в результате изменений высоты тона, рыскания и GPS (на который я подписываюсь).
Я пытаюсь понять, нужно ли мне использовать XNA, так как это кажется мне требовательной к графике задачей, и это то, для чего нам объяснили XNA, или я могу использовать silverlight, который кажетсянемного более простой для разработки с помощью элементов управления draggabale и всего.
Я надеюсь, что мой вопрос будет решен, если, если не, спросите, и я предоставлю больше разъяснений.

Спасибо,
Иттай
Обновление:
В основном я пытаюсь понять, рендерится ли около 20 2D-изображений, которые будут перерисованы на основе вышеизложенногособытия, может ли Silverlight справиться с этим или требует xna (поскольку это слишком требовательная графика)?
Если у кого-то есть опыт с этими проблемами, я бы хотел услышать.
Последнее обновление (надеюсь):
Главное, что меня беспокоит, это способность Silverlight управлять обновлением экрана, вроде как говорить.
Видя, что это приложение с дополненной реальностью и всякий раз, когда пользователь перемещает телефон, янужно отрегулировать наложенные изображения , ничего сложного, просто переместите их на несколько смещений пикселей вверх / вниз / влево / вправо, но все же есть, что сделать.
Я обеспокоен тем, что пытаюсь применить эти небольшие, но частыеизменения в изображениях окажутся проблемой?И, учитывая, что это два разных пути реализации, я не думаю, что это квалифицируется как преждевременная оптимизация.
Поскольку я думаю, что вы можете легко понять, что я предпочел бы использовать silverlight, я просто не уверен, что он справится с этим.
Большое спасибо за чтение всех обновлений,
Иттай

Ответы [ 5 ]

2 голосов
/ 10 декабря 2010

У меня такое же сомнение.Я считаю, что WPF / Silverlight лучше, чем XNA, из-за высокого уровня кода.У нас там много элементов управления, которых у XNA нет.Я на самом деле создаю игру в WPF.Но я должен продвигаться дальше.Ну, эта ссылка может вам помочь: Какие ограничения есть у WPF по сравнению с XNA?

Если вы считаете, что вам потребуется больше производительности при рендеринге, то я предлагаю использовать XNA.

2 голосов
/ 10 декабря 2010

Лично я бы выбрал Silverlight, если вам не нужно что-то конкретное для XNA.

Специальная функциональность XNA:

  • рендеринг 3D-изображений
  • имеет смысл запускать в игровом цикле и иметь постоянно меняющийся экран (а не напрямую реагировать на случайные пользовательские события).
  • необходимо выполнить множество пользовательских, детализированных манипуляций с изображениями.

Это последнее, из-за которого XNA может показаться вам подходящей, но если вы просто накладываете предопределенные изображения или полигоны, я бы использовал Silverlight.

Количество изображений не должно быть проблемой, если они невелики с большим количеством совпадений.

Отказ от ответственности (что следует учитывать в свете любого потенциального смещения): у меня гораздо больше опыта в Silverlight, чем в XNA. Я не удивлюсь, если кто-то с большим количеством XNA и меньшим опытом Silverlight увидит это по-другому.

1 голос
/ 12 декабря 2010

Я согласен с предыдущими ответами и с вашей оценкой «преждевременной оптимизации»:

  1. Silverlight более чем способен сделать то, что вам нужно: мы видели, что он делает 60FPS с графикой на устройстве
  2. XNA даст преимущество с 3D-графикой, а не 2D

Важные моменты, на которые следует обратить внимание:

  • Я думаю, что на счету FPS. Но даже если это произойдет, вы выиграете, если разместите свой собственный для debug-node, который позже можно будет использовать на реальном телефоне. Это быстро даст вам представление о том, как быстро вы можете рендерить
  • Обязательно используйте « BitmpaCache » на своем холсте. Для получения дополнительной информации см. Здесь: http://www.andybeaulieu.com/Default.aspx?EntryID=196&tabid=67 о производительности WP7 и здесь: (тот же домен) /Home/tabid/67/EntryID/144/Default.aspx в Bitmap Caching.
  • Попробуйте API "pitch / yaw", найдите некоторую информацию о них, посмотрите пороговые значения для них. Данные, которые вы получите от них, вероятно, будут не очень точными, поэтому лучше подумайте об этом, а не о Silverlight: :)
  • Я не уверен, что обновления GPS вам сильно помогут, так как это, вероятно, слишком грубо

Удачи!

Эяль

1 голос
/ 11 декабря 2010

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

То, на что вы можете обратить внимание, - это то, какие уникальные возможности вы можете использовать на столе.

Silverlight приносит элементы управления на стол. Если вы принимаете пользовательский ввод и отображаете вещи, отличные от ваших изображений, это может быть важным фактором для вас. В настоящее время XNA только начинает получать поддержку от сообщества, чтобы заполнить эту дыру.

XNA предоставляет API-интерфейсы для трехмерной графики и поддержку математических вычислений, часто выполняемых в приложениях с интенсивной графикой (таких как игры), таких как векторы, матрицы, плоскости, лучи, ограничивающие типы, пересечения в трехмерном пространстве.

Вы также можете посмотреть свой текущий набор навыков, чтобы увидеть, что даст вам более короткую кривую обучения.

Я полагаю, что ваш опыт работы с Java связан с функциями платформы (такими как элементы управления пользовательским интерфейсом), которые больше похожи на Silverlight, чем на XNA, но это предположение.

Я реализовал рендеринг 3D-объектов с помощью текстур и трассировки лучей на 2D-изображения, используя C без поддержки Graphics API, когда я был в Uni, возможно, вы могли бы сделать то же самое в Java. Проект такого рода был бы намного проще с поддержкой такого API, как XNA.

edit: WRT к вашему последнему обновлению , эти виды преобразований могут обрабатываться в потоке рендеринга (gpu) с использованием silverlight так же, как анимации текстур, выполненные с помощью API-интерфейсов XNA, будут передаваться в поток gpu. Я бы порекомендовал сначала провести тесты производительности анимации изображений, чтобы убедиться, что вы не будете удивлены неожиданным погружением.

Если вы чувствовали такую ​​склонность, вы можете продублировать демонстрацию, используя XNA, чтобы сравнить и увидеть, есть ли заметные различия в эффективности запуска нескольких анимаций. Каждая отдельная анимация, хотя я уверен, будет сравнительно.

0 голосов
/ 10 декабря 2010

С точки зрения времени разработки, Silverlight будет быстрее и продуктивнее. Если вы пользуетесь xna, вы потратите много времени на реализацию элементов управления или функциональности, которые поставляются из коробки с Silverlight.

С точки зрения производительности. XNA дает вам больше контроля и лучшую производительность.

Вы также можете смешать их вместе. Я разработал игру wp7, в которой я называю XNA api для обработки звука, потому что это намного проще, чем silverlight.

Полагаю, что лучшим решением было бы сделать ваше приложение с Silverlight и вызывать API XNA для удовлетворения более интенсивных графических требований, если это необходимо.

...