Управляется Direct3D или XNA для неигрового программирования трехмерной графики? - PullRequest
4 голосов
/ 21 декабря 2008

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

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

Ответы [ 6 ]

4 голосов
/ 21 декабря 2008

тявкать, слишком плохо 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.

3 голосов
/ 24 декабря 2008

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

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

1 голос
/ 09 февраля 2009

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

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

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

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

1 голос
/ 21 декабря 2008

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

0 голосов
/ 22 декабря 2008

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

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

0 голосов
/ 21 декабря 2008

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

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

...