3D estereoscópico en WPF

Tengo que mostrar gráficos 3D estereoscópicos en un control WPF.

Ya tengo el código que crea dos texturas DirectX-9 para mostrar, una textura para cada ojo.

Quiero usar 3D Vision (no anaglifo).

Consideré las siguientes formas de mostrar las dos imágenes como estéreo 3D:

Utilizando OpenGL o DirectX 11.1 API estéreo.Usando NvAPI_Stereo_SetActiveEye como se describe aquí:http://www.nvidia.com/docs/IO/40505/WP-05482-001_v01-final.pdfUsando la firma estéreo NVidia como se describe aquí:NV_STEREO_IMAGE_SIGNATURE y DirectX 10/11 (nVidia 3D Vision)Intente renderizar las dos imágenes una tras otra, con la esperanza de que CompositionTarget.Rendering no pierda muchos VSyncs y sincronice si se pierden los VSyncs individuales. Además, encienda el emisor 3D Vision mediante un control invisible que representa una imagen estereoscópica ficticia.Procesando la escena 3D y dejando que el controlador NVidia lo haga estereoscópico automáticamente.Representación a cierto control de Windows real (como el control de Winform) y uso del host WPF (como WinFormHost) para mostrar el contenido.

Los problemas con los métodos anteriores son:

1-3: Una de las tres primeras formas parece ser la solución directa, pero no es posible en WPF ya que no puedo crear el Dispositivo / Contexto y controlar la forma en que se representa la imagen.

4: Con CompositionTarget.Rendering solo obtengo unos ~ 60Hz en lugar de 120Hz. Supongo que el problema es que EndScene () se llama dos veces, una en mi escena renderizada y la otra en el mecanismo de renderizado WPF, pero no estoy seguro. De todos modos, aunque funcione, esa solución parece ser inestable.

5: La representación de escenas en 3D no es posible en mi caso por algunas razones técnicas que me obligan a representar las dos imágenes para los dos ojos por mí mismo.

6: El problema con WinFormHost y sus amigos es que no es un control de WPF y tiene un comportamiento inesperado en términos de controles de WPF. Por ejemplo, el control WinForm ocultará los controles WPF que están más arriba en el árbol lógico, no se puede rotar utilizando RotateTransform y más.

Por el momento elegí la última solución, utilizando WinFormHost. ¿Alguien sabe una solución para ese muro irrompible con la creación de 3D estereoscópico dentro del control real de WPF?

Respuestas a la pregunta(0)

Su respuesta a la pregunta