是否可以在 Nvidia 3D Vision 硬件上运行 Java3D 应用程序?

2022-09-04 22:47:40

是否可以在Nvidia 3D Vision硬件上运行Java3D应用程序?

我有一个现有的Java3D应用程序,可以在立体3D中运行。过去,我总是使用OpenGL渲染器和四缓冲立体声在Quadro卡上运行应用程序。

我现在可以使用带有nVidia 3D Vision系统的笔记本电脑(带有GeForce GTX 460M)。从文档中可以看出,如果我使用 DirectX 绑定并让 nVidia 驱动程序处理立体声,则似乎应该可以在立体声中运行我的应用程序,但是,情况似乎并非如此。

如果我使用j3d.rend=d3d运行Java3D应用程序,nVidia 3D Vision API似乎无法将其识别为DirectX应用程序。

如何获取 nVidia 3D Vision 驱动程序来检测 Java3D 应用程序并以立体 3D 进行渲染?


答案 1

我感到失望的是,到目前为止,每个人都认为这是不可能的。在过去的几天里,我一直在研究这个问题,并取得了一些进展。到目前为止,我发现这是可能的,但有一些警告:

  1. 您需要来自 nVidia 的最新驱动程序(在撰写本文时为 280.29)
  2. 您需要使用 Direct3D 渲染器,而不是 OpenGL 渲染器 (-Dj3d.rend=d3d)
  3. 需要强制 Direct3D 在全屏模式下运行。(-Dj3d.fullscreen=REQUIRED)
  4. 您需要在全屏模式下使用ConfigibleUniverse运行(我使用的是Java3D文档中提供的j3d-1x1.cfg)

为了让它在64位机器上工作,我不得不使用Java3D的64位dlls,有人在Java3D论坛上提供了有用的(http://home.java.net/node/705510)这在32位系统上可能是必需的,也可能不是必需的。

nVidia驱动程序的未来版本有望改善对窗口模式立体声的支持,因此将来可能会变得更加容易(可能消除对上述选项3和/或4的需求)

我还将调查使用一些额外的 nVidia 绑定重新构建 Java3D 源代码是否可以消除全屏要求,并使用结果重新发布。


答案 2

Java3D使用一种叫做“Quadbuffer Stereo”的东西,即两个不同的双缓冲帧缓冲器,一个用于左眼,一个用于右眼。NVidia认为这个东西是“专业级”,尽管如果不精确控制双眼的内容,就不可能进行适当的立体摄影。

但是,3D Vision 会插入一些着色器来创建原位立体分离。但是,这仅适用于通过3D Vision API为其提供一些提示的程序。Java3D则不然。

让我们只希望微软确实会把Quadbuffered Stereo作为DirectX 12 Graphics的核心要求,这样NVidia就不再有蹩脚的借口来阻止“消费级”OpenGL。


推荐