2010-02-11 19 views
7

sto transizione da WinForms/XNA a WPF/SlimDX perché:finestre SlimDX a controlli WPF

  • a) tutti i vantaggi di WPF oltre WinForms (ma la curva di apprendimento = ouch)
  • b) Mi piacerebbe avere più Viewport SlimDX collegati ai pannelli. XNA ha 1 schermo "gioco".
  • c, ultimi e meno) di supporto DirectX 10

tutto il mio codice XNA precedente è in C#. Non riesco a capire come eseguire il porting su SlimDX e WPF ad alto livello. Ho cercato come un matto. Il più vicino che ho trovato sono:

1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 Molti articoli indicano questa discussione, tuttavia è incompleta e non posso capire la XAML, e ottengo errori del dispositivo dopo aver collegato tutti gli eventi _slimDXDevice e Window1 che sono stati lasciati fuori.

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx Questo articolo presuppone che l'utente effettui il porting di C++. Sto facendo il porting del codice XNA che è molto vicino al codice MDX.

Se potessi arrivare al punto in cui ho un modulo WPF con un viewport guidato SlimDX personalizzato che era solo una scatola blu, potrei andare da lì. In XNA ho reso molti RenderTarget separati e li ho posizionati su tutto lo schermo, ora voglio collegarli ai controlli. Ma prima, solo 1 scatola blu! : D

Qualche idea? Ritengo che questo sia semplice o che ci sia un codice "cookie cutter" che mi manca. Molto apprezzato!

+0

Abbiamo un campione che dimostra questo SlimDX, tuttavia , Non credo che sia stato archiviato nel repository SVN e al momento non posso mettermi in contatto con lo sviluppatore che lo ha inserito nella sua copia di lavoro. Questa domanda è un po 'vaga. Stai chiedendo aiuto con gli errori specifici del dispositivo? Se sì, potresti pubblicarli? –

+0

Posso vedere come è una domanda vaga. Non sto chiedendo alcun errore specifico, sono principalmente alla ricerca di una soluzione molto semplice e di alto livello per WPF/SlimDX usando C#. Non riesco a trovarlo documentato o un esempio da nessuna parte. – bufferz

risposta

7

Ora puoi guardare l'esempio.E 'stato solo il check-in al nostro repository, quindi avrai bisogno di usare SVN per ottenerlo (o attendere che la spedizione è prevista al rilascio Feb 2010):

http://code.google.com/p/slimdx/source/detail?r=1356

+0

Questo è bello, grazie. – mdm20

+0

Grazie Josh, questo è un ottimo esempio. Ben fatto anche con ViewModels. Voi ragazzi siete bravi. Spero che altri che stanno cercando WPF/SlimDX finiscano qui. Grazie ancora! – bufferz

+1

Promesso in realtà ha scritto il campione, non io, ma lo passerò oltre. –

0

D3DImage è la classe che si desidera utilizzare. Anche se il tutorial sul codeproject è C++, è molto applicabile a SlimDX e WPF.

Tutto ciò che dovete fare con il vostro SlimDX, è eseguire il vostro codice normalmente, ma NON eseguire un Presente (...) sul dispositivo o catena di scambio. Nel punto in cui si inserisce un Present (...), eseguire un D3DImage.SetBackBuffer (...) e inviare la proprietà ComPointer della superficie SlimDX su di esso. Quindi fai D3DImage.AddDirect (...) e ora hai D3D composto in WPF.

Inoltre, assicurati di creare un IDirect3DDevice9Ex altrimenti le tue prestazioni saranno terribili in tutto tranne che in XP!

0

Recentemente ho lavorato con D3DImage e SlimDX e non ho trovato troppo difficile farlo funzionare (con DirextX9). Ho un po 'di codice sul mio pc di casa che posterò più tardi, ma è abbastanza simile al codice nei collegamenti forniti.

Non sono mai riuscito a farlo funzionare con una versione superiore di directx. Jeremiah ha un bel blog post sull'utilizzo di un dispositivo directx9 come collegamento tra directx 10/11/d2d e D3DImage, ma non riuscivo a farlo funzionare con Slimdx. Non ho fatto un sacco di sforzi in se come directx9 ha fatto quello che mi serviva e ho voluto che funzionasse su XP.

+0

Aggiornamento per gli altri che guardano qui: Posso ottenere i campioni in SlimDX senza alcun problema con la versione di May 2011 di SlimDX per DirectX 10. –

Problemi correlati