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

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

Кроме того, поддержка Managed Direct 3D прекращена? XNA на самом деле не подходит для разработки неигр.


person Thomas Bratt    schedule 21.12.2008    source источник
comment
Я думаю, вы имели в виду, что XNA на самом деле не подходит, кроме как для разработки игр.   -  person faulty    schedule 21.12.2008
comment
@faulty: исправлено - спасибо :)   -  person Thomas Bratt    schedule 21.12.2008


Ответы (6)


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

person Pop Catalin    schedule 21.12.2008
comment
Я думаю, что WPF в этом контексте в настоящее время не вариант. WPF имеет некоторую поддержку 3D, но не является (пока) 3D-платформой, которую можно сравнить с Direct3D, Managed DirectX или XNA. - person Peter Lillevold; 18.02.2009
comment
@Peter Lillevold: WPF — это не 3D-фреймворк, это UI-фреймворк с полной поддержкой 3D, вы можете интегрировать XNA или DirectiX в приложение WPF или просто использовать WPF для 3D… youtube.com/watch?v=SgNPHldOEZA, WPF предоставляет вам полный доступ к пиксельным и вершинным шейдерам... - person Pop Catalin; 20.02.2009
comment
кроме того, для 3D-приложений WPF является подходящей структурой. Я не говорю, что он когда-либо будет конкурировать с DirectX или XNA в разработке игр, но вопрос касался неигровой разработки. Посмотрите интересные демонстрации и видеоролики о WPF 3D здесь: interknowlogy.com/lab/Pages/ Сеть.aspx - person Pop Catalin; 20.02.2009
comment
Это ужасное отсутствие ответа на вопрос. Ответ ниже с упоминанием SlimDX гораздо более информативен. - person Baxissimo; 07.10.2009

Ага, очень плохо, что MS прекратила выпуск MDX. В настоящее время я использую SlimDX для нашей неигровой разработки. Это не замена MDX, но, по крайней мере, дизайн 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.

person faulty    schedule 21.12.2008

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

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

person bojolais    schedule 24.12.2008

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

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

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

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

person Raumornie    schedule 09.02.2009

Я ни в коем случае не эксперт, но когда я возился с обоими, я обнаружил, что XNA намного лучше. Я просто бездельничаю со своим Zune и компьютерными играми. У меня не было достаточно времени возиться с DirectX, и я нашел гораздо больше примеров для XNA.

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

person Bobby Cannon    schedule 21.12.2008

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

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

person smack0007    schedule 22.12.2008