DirectX от С#

Я изучаю различные варианты использования DirectX в С#; В идеале я хочу использовать любую технологию, предпочитаемую Microsoft.

Технологии, отличные от Microsoft:

Технологии Microsoft:

Обоснование технологии, которую я хочу использовать:

  • Я хочу фреймворк кода (в отличие от записи XAML в WPF)
  • Я хочу (в идеале) поддерживаемую Microsoft инфраструктуру, которая не устарела
  • Я хочу создавать приложения, которые не слишком полагаются на зависимости третьей стороны (т.е. если бы я должен был создать приложение с WPF, структура, скорее всего, уже будет установлена ​​на пользовательском компьютере как часть платформы .NET)

Вопросы:

  • Что такое предпочтительный метод Microsoft для написания приложений с поддержкой DirectX (кроме WPF)?
  • Какие опасности существуют при использовании устаревших технологий (MDX, XNA)?
  • Какая самая популярная технология, отличная от Microsoft DirectX, которая может использоваться на С#?

Ответ 1

Технология DirectX занимает центральное место в современной презентации Windows и игровой графике, поэтому есть много разных возможностей. В вашем вопросе не указано, какое приложение вы создаете или какую платформу вы пытаетесь настроить.

У Managed DirectX 1.1 есть длинный список проблем на данный момент: он не поддерживает .NET 4.x, что означает, что VS 2010 или более поздние проекты С# по умолчанию не могут его использовать. Он использует устаревшее D3DX9 и устаревшее развертывание DirectSetup. Он не поддерживает 64-разрядные собственные приложения. Он поддерживает Direct3D 9, а не Direct3D 10.x или 11.x. Он предоставляет кучу устаревших вещей, таких как DirectPlay и DirectSound. Он не обновлялся с ~ 2006 года, и поиск образцов для него - задача. Он не поддерживает приложения Windows Store, телефон Windows, Xbox 360 или Xbox One.

SlimDX - хороший выбор для тех, у кого есть существующее управляемое приложение DirectX 1.1, которое хочет перейти к чему-то, что лучше поддерживается. Он совместим с собственными приложениями x64 и .NET 4.0. Проект действительно застопорился с точки зрения прогрессирования, но он с открытым исходным кодом, поэтому вы всегда можете работать с ним самостоятельно.

XNA Game Studio 4 поддерживает .NET 4.0 и может ориентироваться на Xbox 360, Windows 7, Windows 8 (в appcompat) и 32-разрядные приложения Windows. Он не поддерживает родные приложения x64, а конвейер контента совместим только с VS 2010. Он использует устаревший D3DX9, поэтому он зависит от устаревшего развертывания DirectSetup. Он предоставляет Direct3D 9, а не Direcxt3D 10.x или 11.x. Он не поддерживает приложения Windows Store или Xbox One. Это характерно для написания игр.

Windows Presentation Foundation имеет интерфейс Direct3D9/Direct3D9Ex, но не Direct3D 10.x или Direct3D 11.x. Это полезная технология для настольных приложений Win32, но не поддерживается для приложений Windows Store, телефона Windows или Xbox One. См. MSDN. Это не особенно подходит для создания игр, но многие разработчики игр использовали его для своего инструментария. Отсутствие поддержки DirectX 10.x/11.x является сложной задачей, но вы можете заставить ее работать с DXGI Shared Surfaces с помощью Direct3D9Ex.

SharpDX - популярный выбор для сопоставления С# для современных API DirectX. Он также поддерживает приложения Windows Store и Windows Phone и является активным проектом.

Кстати, если вы просто ищете прямой способ использовать Direct2D с С#, вы можете посмотреть Win2D.

Смотрите DirectX и .NET