3D Engine с C#
Цель моего личного эксперимента - создать 3D-движок на C#.
Я немного прочитал о XNA и SlimDX. Я не уверен насчет XNA, потому что это, по сути, уже законченный движок, и поэтому мне нечего делать. SlimDX выглядит ближе к моим предположениям, но я был бы признателен за любые другие рекомендации.
У меня есть некоторый опыт использования OpenGL и написания простого движка для игр для Android и для ПК с использованием jogl.
Мне интересно услышать о чем-то похожем на уровень абстракции, доступный через Java / OpenGL, но на этот раз с DirectX.
2 ответа
Вы можете скачать старый DirectX SDK здесь, который даст вам обертки C# для Direct3D.
Однако... если вы действительно хотите попробовать XNA, это, вероятно, один из лучших учебников, с которого можно начать (и под началом я имею в виду достаточно, чтобы реализовать свою собственную игру, но это займет много работы),
Вы можете получить текущую версию XNA SDK здесь
В качестве оболочки DirectX C# есть также http://sharpdx.org/
Пара плюсов / минусов между Xna / SlimDX
Xna проста в освоении, и у вас уже есть некоторые встроенные функции для загрузки моделей, рисования текста, некоторые встроенные предустановки состояния рендеринга, математические классы / структуры. С другой стороны, его набор функций довольно ограничен по сравнению с возможностями новой видеокарты. У вас все будет готово и работает довольно быстро, но, с другой стороны, вы можете оказаться немного ограниченными для расширенных функций (тесселяция / вычисления / добавление буферов / глубина только для чтения и многие другие). Конечно, у вас еще будет много работы.
SlimDX / SharpDX довольно минимальны (в основном они охватывают функции DirectX), поэтому, если вы хотите использовать DirectX11 (если вы хотите использовать 9, перейдите на xna:), у вас будет немного работы для того, чтобы что-то работало во-первых, но вы будете иметь полную мощность DX и полную гибкость в том, как вы хотите организовать свой движок. Вам потребуется собственный импортер моделей, средство визуализации шрифтов (DirectWrite), менеджер состояний. Наиболее распространенная математическая часть уже существует (матрица / векторы), поэтому вам не придется беспокоиться об этой части.