XNA против SlimDX для закадрового рендера - PullRequest
3 голосов
/ 19 мая 2010

Я понимаю, что здесь есть множество вопросов о выборе между XNA и SlimDX, но все они касаются программирования игр.

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

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

  • Сочетание 3D и 2D элементов.
  • Относительно небольшое количество элементов в сцене (десятки ячеек, десятки двумерных элементов).
  • Большие сцены (квадрат до 3000 пикселей для печати).
  • Будет отображаться только один кадр (т. Е. FPS не является проблемой).
  • Маски непрозрачности.
  • Пиксельные шейдеры.
  • Откат программного обеспечения (серверы могут иметь или не иметь приличную карту gfx).
  • Возможность визуализации за кадром.

Как вы можете видеть, это довольно простые вещи, и WPF может управлять ими довольно хорошо, за исключением проблемы невозможности экспортировать сцену.

В частности, мне не нужно много вещей, которые обычно нужны при разработке игр. Имея это в виду, вы бы выбрали XNA или SlimDX? Часть кода, не предназначенная для рендеринга, уже написана на C #, поэтому хочу придерживаться этого.

Ответы [ 2 ]

5 голосов
/ 19 мая 2010

Я не использовал SlimDX, но основываясь на моем опыте работы с XNA и прочтении о цели SlimDX. Я бы предложил SlimDX. Хотя XNA и может использоваться для других целей, это, прежде всего, Game Engine, а не Rendering Engine. У него много специфических оптимизаций и методологий, ориентированных на Игры.

Кроме того, XNA любит предварительно встраивать свои ресурсы в файлы DirectX (.x), если вы работаете с динамическими файлами, я думаю, SlimDX - лучший выбор для вас.

2 голосов
/ 20 мая 2010

XNA и SlimDX очень близки по своей природе, но есть некоторые различия:

  • XNA требует графический процессор с минимальным количеством пиксельных / вершинных шейдеров 1.1, в то время как SlimDX этого не делает.

  • SlimDX поддерживает DirectX10 и 11, а XNA поддерживает только DirectX 9.

  • XNA является кроссплатформенной платформой между Windows, Xbox 360, Zune и Windows Phone 7, а SlimDX - нет.

  • XNA имеет сильное сообщество (creators.xna.com) с тоннами учебников и справочных материалов.

Я бы пошел с XNA.

...