WPF上的立体3D

时间:2013-11-14 21:17:51

标签: wpf 3d directx stereo-3d stereoscopy

我必须在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 and DirectX 10/11 (nVidia 3D Vision)
  4. 尝试一对一渲染两张图片,希望CompositionTarget.Rendering不要丢失太多VSyncs,并在单个VSyncs丢失时进行同步。此外,通过一些不可见的控制来打开3D视觉发射器,渲染虚构的立体图像。
  5. 渲染3D场景并让NVidia驱动程序自动立体化。
  6. 渲染到一些真正的Windows控件(例如Winform控件),并使用WPF主机(例如WinFormHost)来显示内容。
  7. 上述方法存在的问题是:

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

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

    5:由于某些技术原因迫使我自己渲染两只眼睛的两张图像,因此无法渲染3D场景。

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

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

0 个答案:

没有答案