WPF上的立体3D

MaM*_*zav 5 directx 3d wpf stereoscopy stereo-3d

我必须在WPF控件上显示立体3D图形.

我已经有了创建两个DirectX-9纹理的代码,每个眼睛都有一个纹理.

我想使用3D Vision(不是立体照片).

我考虑了以下方式将两张图片显示为3D立体声:

  1. 使用OpenGL或DirectX 11.1 Stereo API.
  2. 使用NvAPI_Stereo_SetActiveEye,如下所述:http://www.nvidia.com/docs/IO/40505/WP-05482-001_v01-final.pdf
  3. 使用此处所述的NVidia立体声签名: NV_STEREO_IMAGE_SIGNATURE和DirectX 10/11(nVidia 3D Vision)
  4. 尝试一对一地渲染两张图片,希望CompositionTarget.Rendering不要丢失太多的VSyncs,并在单个VSyncs丢失时进行同步.此外,通过一些不可见的控制来打开3D视觉发射器,渲染虚构的立体图像.
  5. 渲染3D场景并让NVidia驱动程序自动使其立体化.
  6. 渲染到一些真正的Windows控件(如Winform控件),并使用WPF主机(如WinFormHost)来显示内容.

上述方法存在的问题是:

1-3:前三种方式中的一种似乎是直接的解决方案,但在WPF中是不可能的,因为我无法创建设备/上下文并控制图片的呈现方式.

4:使用CompositionTarget.Rendering我只得到约60Hz而不是120Hz.我想问题是EndScene()被调用两次 - 一次在我的渲染场景中,另一次在WPF渲染机制中,但我不确定.无论如何即使它会起作用 - 该解决方案似乎不稳定.

5:在我的情况下渲染3D场景是不可能的,因为某些技术原因迫使我自己渲染两只眼睛的两张图像.

6:WinFormHost及其朋友的问题是它不是WPF控件,并且在WPF控件方面有意外行为.例如,WinForm控件将隐藏逻辑树上较高的WPF控件,无法使用RotateTransform等旋转.

现在我选择了最后一个解决方案 - 使用WinFormHost.有没有人知道这个坚不可摧的墙的解决方案,在真正的WPF控制中制作立体3D?