基于WPF的立体3D

基于WPF的立体3D,wpf,3d,directx,stereo-3d,stereoscopy,Wpf,3d,Directx,Stereo 3d,Stereoscopy,我必须在WPF控件上显示立体3D图形 我已经有了创建两个DirectX-9纹理的代码来显示,每只眼睛一个纹理 我想使用3D视觉(而不是浮雕) 我考虑了以下方法将这两张图片显示为3D立体: 使用OpenGL或DirectX 11.1立体声API 使用NvAPI_Stereo_SetActiveEye,如下所述: 使用NVidia立体声签名,如下所述: 尝试一个接一个地渲染两张图片,希望CompositionTarget.rendering不会丢失太多的VSync,如果丢失了单个VSync,则进

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

我已经有了创建两个DirectX-9纹理的代码来显示,每只眼睛一个纹理

我想使用3D视觉(而不是浮雕)

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

  • 使用OpenGL或DirectX 11.1立体声API
  • 使用NvAPI_Stereo_SetActiveEye,如下所述:
  • 使用NVidia立体声签名,如下所述:
  • 尝试一个接一个地渲染两张图片,希望CompositionTarget.rendering不会丢失太多的VSync,如果丢失了单个VSync,则进行同步。此外,通过一些不可见控件打开3D视觉发射器,以渲染虚拟立体图像
  • 渲染3D场景,并让NVidia驱动程序使其自动立体化
  • 呈现到一些真实的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的牢不可破的墙的解决方案吗