![nvidia 3d vision 究竟是如何实现的](https://linux22.com/image/1252863/nvidia%203d%20vision%20%E7%A9%B6%E7%AB%9F%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84.png)
在我的公司,我们多年来一直使用立体快门眼镜和能够处理垂直刷新率 > 120Hz 的快速 CRT 屏幕。最近,这种显示器越来越难找到,所以我们决定试用一款支持 120Hz 刷新率的新型 LCD,并且如 nVidia 网站所承诺的那样,支持 3D 视觉。我们买了一台三星 2233RZ。我们实现立体的方式是以 120Hz 的频率交替显示左右图像(使用 DirectX),快门为相应的眼睛交替打开/关闭(通过发送与 DirectX 同步的触发器),因此实际图像以 60Hz 的频率在 3D 中被感知。毫无疑问,这个系统是有效的。
然而,运气不佳,使用屏幕 + 百叶窗并没有起到什么作用:
- 液晶显示屏上的像素在一帧的持续时间内(8毫秒)处于开启状态
- PC 发出的帧实际绘制到屏幕上之前会有大约半帧的延迟
- 换句话说,当快门打开时(也是 8 毫秒),眼睛看到的是左图像的一半,右图像的一半
我们用一些硬件来补偿延迟并缩短快门打开的时间,从而解决了这个问题。到目前为止一切顺利:3D 感知效果非常好,但仅限于屏幕中间的小图像。
进一步的测量结果让我们大吃一惊:2233RZ 不会一次性显示整个帧(这是我们对 LCD 屏幕的期望:我们这里的任何 LCD,还有 DLP 投影仪,都是这样),而是像 CRT 一样逐行写入。因此决不使立体声与快门正常工作,因为左上角像素打开和右下角像素关闭之间有 8 毫秒的延迟。此外,当右下角像素打开时,左上角像素已经关闭。
问题是:nVidia 是如何做到的,我们也能做到吗?他们的 3D 视觉套件中的眼镜使用与我们的相同原理,所以它必须在屏幕/视频卡中,不是吗?他们如何强制屏幕一次性显示整个帧,以便所有像素同时打开和关闭?这是可以在软件中设置的东西吗?还是只有在使用列出的与 3D 套件兼容的 GeForce 卡之一时才能做到这一点(我们使用 Quadro 570 进行了测试,使用双链路电缆)?如果是这样,他们是否通过 DVI 进行协议,就像“嘿,我是 GeForce,你是 120Hz 屏幕,你能在 8 毫秒内显示一帧,这样我们就可以做一些立体的东西吗?”屏幕响应“是的,我可以这样做”或“不,我不能,因为你是 Quadro”?
编辑:刚刚发现该网站还推出了一款“3D Vision Pro”,支持 Quadro FX570。最大的区别在于眼镜使用的是 RF 而不是红外发射器。但这意味着我们使用的 PC 满足 3D 视觉的要求。
因此‘实际’重要的问题是(感谢 MBraedley):我如何告诉卡和屏幕进入 3D 模式,以便屏幕一次更新所有像素?
编辑2:在 nVidia cpl 中,我打开了 3D 设置。现在,当使用兼容应用程序中列出的 StereoView 时,该应用程序确实报告“立体缓冲区”可用,因此似乎一切都设置正确。然而问题仍然存在:根据眼镜上调整的延迟量,屏幕顶部、中心或底部会出现串扰(“重影”)。
更新
在与 nVidia 多次来回邮件沟通之后,他们基本上声称他们的系统比我们的更好,但他们不能告诉我们原因,因为这是他们的知识产权等,我们决定直接购买 3D 套件,因为它很便宜。
经过一些测量,很明显:他们使用的原理与我们 10 年来使用的原理完全相同。他们没有使用任何特殊技巧,3D Vision 的性能远不如我们的系统。只有两个区别:
- 软件:它们有一些 API 方法,您可以为两幅图像分配两个,然后它们会自动交错显示。我们通过将一帧接一帧地发送到视频卡来“手动”执行此操作。
- 硬件:与我们使用的相比,他们的眼镜非常糟糕。使用 nVidia 眼镜时,重影非常严重,从上到下都可以看到:他们的眼镜的“关闭”状态远非关闭。这里要注意一点:这是使用示波器测量的重影。当观看具有大量细节且没有巨大对比度的实际场景(通常用于游戏)时,重影几乎用肉眼看不见。
答案1
其原理基本相同:向一只眼睛显示一幅图像,然后向另一只眼睛显示另一幅图像。但是,为了正常工作,NVidia 3d(以及与之配合使用的显示器)需要 DVI-D 连接,而我怀疑您一直使用的 CRT 仍然使用模拟。如果您尝试将模拟信号传输到 2233RZ,我感觉它无法正确渲染 3d。同步是在初始设置期间设置的,尽管我不确定它是如何实现的。
我确实知道显示器知道它正在显示 3D 图像,因为在 3D 模式下,包括亮度和对比度在内的大多数控件都被禁用。但是,显示器不会仅仅因为正在使用某张卡而发出抱怨。不受支持的卡根本无法工作,而支持的卡应该可以与所有受支持的显示器配合使用,只要它们连接正确并且安装了驱动程序和软件。
话虽如此,如果您的应用程序不使用与 NVidia 3D 兼容的 3D 模式(由于它使用 DirectX,所以我很难相信),那么 NVidia 将不知道如何处理给定的图像。