Управляемый Direct3D или XNA для не связанных с игрой 3D-графических программ?

Каков предпочтительный подход для программирования .NET 3D графики: Direct3D или XNA, по-видимому, являются современными технологиями, но лучше всего подходят для программирования, не связанного с игрой?

Кроме того, было ли прекращено управление Direct 3D? XNA действительно не подходит для развития без игры.

6 ответов

Если это не игра, о чем это связано? Если вы ответите на это, мы можем дать вам хороший ответ, так или иначе, в зависимости от приложения WPF может быть хорошим ответом.


Yap, слишком плохое MS прекращено MDX. В настоящее время я использую SlimDX для нашей разработки, не связанной с игрой. Это не замена MSX, но по крайней мере дизайн API довольно интуитивно понятен по сравнению с API MDX v1.1. Я использовал MDX v1.1 +.Net v1.1 для версии 1 нашего продукта. Что касается версии 2, мы переходим к .Net 2.0. MDX v1.1 не очень хорошо работает с .Net 2.0, плюс у него есть довольно много другой неотъемлемой проблемы. Таким образом, нам пришлось искать альтернативу.

Изначально XNA был нашим лучшим выбором. Затем, поскольку он нацелился на рынок игр и совместимость с xbox 360, мы обнаружили, что нам нужно написать много обходных/хаки, чтобы он работал для нас. Хуже совместимость с DirectShow, которую мы широко используем в нашем продукте. MS создала огромный пробел между существующей и новой технологией, где последняя замена MDX и DirectShow недостаточно мощна, чтобы заменить старые на данный момент, и мы не можем дождаться следующей версии.

Я бы не сказал, что SlimDX лучше всего подходит для разработки без игр. Но для моего случая это так. И поскольку это OpenSource, мы всегда можем вносить изменения в места, где мы считаем нужным. Во время использования SlimxDX + DirectShow.Net существуют довольно вопиющие сбои. Эти глюки не существуют, когда мы используем MDX 1.1 + DirectShow.Net. Я предполагаю, что внутри, MS вкладывает немало взломов, чтобы заставить его работать.

В любом случае, если вы вообще не используете DirectShow, рассмотрите Ogre3D/MOgre3D. MOgre3D представляет собой управляемую оболочку для Ogre3D, хорошо продуманного 3D-движка. Это был наш первый выбор, но мы не можем его использовать, потому что он не поддерживает DirectShow.


Управляемый DirectX не был настолько брошен, как был переписан как XNA. Правда, XNA был разработан с учетом Xbox 360, но XNA подходит для использования в 3D-программировании без игры, как и любая другая трехмерная структура, которую я использовал. Не забывайте, что XNA чрезвычайно удобен для импорта конвейера импорта... Вы можете легко и быстро получать свои модели и шейдеры на карту и рендеринг.

Как было сказано выше, сообщество Club Creaters очень богато, и их Winforms tutorials, вероятно, будут вам интересны.


Простой ответ здесь, возможно, XNA. И, возможно, WPF. Это зависит.

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

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

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


Я не в любом случае эксперт, но когда я возился с обоими, я нашел путь XNA лучше. Я просто обойдусь своими играми Zune и ПК. Мне не хватило времени, чтобы пообщаться с DirectX, и я нашел больше примеров для XNA.

У вас также есть целый сообщество, чтобы помочь вам.


Xna - управляемый Microsoft DirectX. К сожалению, они не много писали об использовании этого для не связанных с игрой вещей, но это можно сделать.

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

licensed under cc by-sa 3.0 with attribution.