2010-02-11 15 views
7

estoy en transición de Windows Forms/XNA a WPF/SlimDX porque:ventanas SlimDX en WPF controla

  • a) todos los beneficios de WPF más WinForms (pero la curva de aprendizaje = ay)
  • b) Me gustaría tener múltiples viewports SlimDX adjuntas a los paneles. XNA tiene 1 pantalla de "juego".
  • c, últimos y menos) DirectX 10 de apoyo

Todos los de mi código XNA anterior es en C#. Tengo problemas para descubrir cómo transferir esto a SlimDX y WPF en un nivel alto. He buscado como loco. El más cercano que he encontrado son:

1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 Muchos artículos apuntan a esta discusión, sin embargo, es incompleta y no puedo averiguar el XAML, y tengo errores de dispositivo después de conectar todos los eventos _slimDXDevice y Window1 que fueron dejados fuera.

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx En este artículo se supone que el usuario está portando C++. Estoy portando código XNA que está muy cerca del código MDX.

Si pudiera llegar al punto en el que tengo un formulario WPF con una ventana gráfica personalizada SlimDX que fuera solo una caja azul, podría ir desde allí. En XNA hice muchos RenderTargets separados y los coloqué en toda la pantalla, ahora quiero adjuntarlos a los controles. Pero primero, ¡solo 1 caja azul! : D

¿Alguna idea? Siento que esto es simple o que hay un código de "cookie cutter" que me falta. ¡Apreciado enormemente!

+0

Tenemos un ejemplo que muestra esto en SlimDX, sin embargo , No creo que esté registrado en el repositorio de SVN y actualmente no puedo contactar al desarrollador que lo tiene en su copia de trabajo. Esta pregunta es algo vaga. ¿Estás pidiendo ayuda con los errores específicos del dispositivo? Si es así, ¿podría publicarlos? –

+0

Puedo ver cómo es una pregunta vaga. No estoy preguntando sobre ningún error específico, estoy buscando principalmente una solución de alto nivel muy simple para WPF/SlimDX usando C#. Parece que no puedo encontrarlo documentado ni como un ejemplo en ningún lado. – bufferz

Respuesta

7

Puede ver la muestra ahora.Simplemente ha sido comprobado en nuestro repositorio, por lo que tendrá que utilizar SVN para conseguirlo (o esperar hasta que enviemos la liberación feb 2010):

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

+0

Esto es genial, gracias. – mdm20

+0

Gracias Josh, este es un gran ejemplo. Bien hecho con ViewModels también. Ustedes son buenos. Espero que otros que están buscando WPF/SlimDX terminen aquí. ¡Gracias de nuevo! – bufferz

+1

Promit realmente escribió la muestra, no yo, pero la pasaré. –

0

D3DImage es la clase que desea utilizar. Aunque el tutorial del proyecto de código es C++, es muy aplicable a SlimDX y WPF.

Todo lo que tiene que hacer con su SlimDX es ejecutar su código normalmente, pero NO ejecute un Presente (...) en su dispositivo o cadena de intercambio. En el punto donde pondría un Presente (...), haga un D3DImage.SetBackBuffer (...) y envíele la propiedad ComPointer de su superficie SlimDX. Luego haga D3DImage.AddDirect (...) y ahora tiene D3D compuesto en WPF.

Además, asegúrese de crear un IDirect3DDevice9Ex o su rendimiento será terrible en todo menos en XP.

0

Hace poco estuve jugando con D3DImage y SlimDX y no me resultó muy difícil hacerlo funcionar (con DirextX9). Tengo un código en mi PC hogareña que publicaré más tarde, pero es bastante similar al código en los enlaces provistos.

Sin embargo, nunca lo pude hacer funcionar con una versión superior de directx. Jeremiah tiene un buen blog post sobre usar un dispositivo directx9 como un enlace entre directx 10/11/d2d y el D3DImage, pero no pude hacerlo funcionar con Slimdx. Sin embargo, no puse mucho esfuerzo porque directx9 hizo lo que necesitaba y quería que funcionara en XP.

+0

Actualización para otras personas que buscan aquí: Puedo obtener las muestras en SlimDX sin problemas con el lanzamiento de SlimDX en marzo de 2011 para DirectX 10. –

Cuestiones relacionadas