2014-10-24 29 views
12

Sto esaminando varie opzioni per l'utilizzo di DirectX in C#; idealmente voglio usare qualsiasi tecnologia preferita da Microsoft.DirectX da C#

non Microsoft Technologies:

tecnologie Microsoft:

Logica dietro la tecnologia voglio usare:

  • Voglio un quadro in codice prima (al contrario di scrittura XAML in WPF)
  • Voglio (idealmente) un Framework supportato da Microsoft non deprecato
  • Desidero creare applicazioni che non si basino eccessivamente su dipendenze di terze parti (ad es. Se dovessi creare un'applicazione con WPF, il quadro sarà probabilmente già installato sulla macchina degli utenti come parte del framework .NET)

Domande:

  • Qual è il metodo preferito di Microsoft per scrivere applicazioni abilitate per DirectX (oltre a WPF)?
  • Quali pericoli ci sono nell'utilizzo di tecnologie deprecate (MDX, XNA)?
  • Qual è la più famosa tecnologia non Microsoft DirectX che può essere utilizzata da C#?
+2

SlimDX non è stato toccato in anni secondo GitHub. SharpDX sembra mantenuto attivamente. SharpDX ha anche un wrapper D2D. – thumbmunkeys

+1

@thumbmunkeys, sfortunatamente nessuna delle due tecnologie Microsoft :-( – series0ne

+1

sì, ma non penso che ci sia un "metodo Microsoft preferito", dipende molto dal tuo caso d'uso. SharpDX è un wrapper DirectX largamente autogenerato, quindi rimane vicino all'API originale (ottimo, perché si applica la documentazione CX DirectX esistente). Sembra che verrà aggiornato anche per supportare DirectX 12: http://sharpdx.org/news/sharpdx-next L'ho usato e lo consiglio vivamente. – thumbmunkeys

risposta

8

La tecnologia DirectX è fondamentale per la moderna presentazione di Windows e la grafica di gioco, quindi ci sono molte strade diverse per questo. La tua domanda non indica in realtà che tipo di applicazione stai creando o quale piattaforma stai cercando di targetizzare.

Managed DirectX 1.1 ha una lunga lista di problemi a questo punto: non supporta .NET 4.x che significa che VS 2010 o successivi progetti C# non possono usarlo. Utilizza la legacy D3DX9 e la distribuzione legacy di DirectSetup. Non supporta app native a 64 bit. Supporta solo Direct3D 9 e non Direct3D 10.xo 11.x. Espone un sacco di materiale legacy come DirectPlay e DirectSound. Non è stato aggiornato dal 2006 e trovare dei campioni è una sfida. Non supporta le app di Windows Store, Windows Phone, Xbox 360 o Xbox One.

SlimDX è una buona scelta per chi ha un'applicazione Managed DirectX 1.1 esistente che desidera passare a qualcosa di meglio supportato. È compatibile con le app native x64 e .NET 4.0.Il progetto è effettivamente in fase di stallo in termini di progressione, ma è open source, quindi puoi sempre lavorarci da solo.

XNA Game Studio 4 supporta .NET 4.0 e può scegliere come target Xbox 360, Windows Phone 7, Windows Phone 8 (in appcompat) e applicazioni Windows a 32 bit. Non supporta le app native x64 e la pipeline del contenuto è compatibile solo con VS 2010. Utilizza la legacy D3DX9 in modo che dipenda dalla deprecata distribuzione di DirectSetup. Espone Direct3D 9 e non Direcxt3D 10.xo 11.x. Non supporta le app di Windows Store o Xbox One. È specifico per scrivere giochi.

Windows Presentation Foundation dispone di interoperabilità Direct3D9/Direct3D9Ex, ma non Direct3D 10.xo Direct3D 11.x. Questa è una tecnologia utile per le app desktop Win32, ma non è supportata per le app di Windows Store, Windows Phone o Xbox One. Vedi MSDN. Non è particolarmente adatto per creare giochi, ma molti sviluppatori di giochi lo hanno utilizzato per la loro pipeline di strumenti. La mancanza del supporto per DirectX 10.x/11.x è impegnativa, ma potresti farlo funzionare con DXGI Shared Surfaces con Direct3D9Ex.

SharpDX è una scelta popolare per un mapping C# delle moderne API DirectX. Supporta anche le app Windows Store e Windows Phone ed è un progetto attivo.

BTW, Se stai cercando un modo diretto per utilizzare Direct2D da C# potresti voler dare un'occhiata a Win2D.

Vedi DirectX and .NET