使用 DirectX9 和 NVAPI 调用的 GeForce 上的 Nvidia 3D 视觉

Nvidia 3D vision on GeForce using DirectX9 and NVAPI calls

我基于此 PDF 的第 14-15 页开发了一个使用 DirectX9 显示立体场景的应用程序,使用对 NVAPI 的调用:

http://www.nvidia.com/docs/IO/40505/WP-05482-001_v01-final.pdf

我的应用程序在配备 Quadro 卡的机器上运行良好,但无法在配备 GeForce 卡的机器上运行。在配备 GeForce 的机器上,发射器灯根本不会变成亮绿色。然而,Nvidia 3D 查看器程序在带有 GeForce 的机器上仍然可以正常工作。

知道我做错了什么吗?我的理解是 OpenGL quad-buffered stereo 只能在 Quadro 上工作,但如果我将 NVAPI 与 DirectX 一起使用,那么它也应该在 GeForce 上工作。

我也试过 blit 方法(在图像的最后一行添加特殊立体 header),根据这个文档:

http://developer.download.nvidia.com/presentations/2009/GDC/GDC09-3DVision-The_In_and_Out.pdf

但我根本无法让它工作,无论是在 Quadro 上还是在 GeForce 上。

非常感谢任何帮助,谢谢!

更新:我找到了这个问题的解决方案,以防万一有人感兴趣。

首先确保驱动程序是最新的。

接下来,获取并运行以下应用程序

http://www.geeks3d.com/20100528/manage-your-sli-profiles-with-nvidia-geforce-sli-profile-tool/

单击 "export" 按钮创建带有应用程序的文本文件 "profiles"

搜索 "Google Earth" 的配置文件并复制一份,但将 "Executable" 的值更改为您的可执行文件的名称。例如,如果您的应用程序文件是 "myapp.exe",它可能如下所示:

Profile "My Application"
ShowOn All
ProfileType Application
Executable "myapp.exe"
    Setting ID_0x0092f4de = 0x37605846
    Setting ID_0x1034cb89 = 0x00000000
    Setting ID_0x106d5cff = 0x00000000
    Setting ID_0x10a879cf = 0x00000001
    Setting ID_0x10f9dc81 = 0x00000011
    Setting ID_0x10f9dc84 = 0x00000100
    Setting ID_0x20568533 = 0x00000001
    Setting ID_0x205f7e3b = 0x00000000
    Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0
    SettingString ID_0x7049c7ec = "2.0"
    SettingString ID_0x704d456e = "Some objects render at wrong depth"
    SettingString ID_0x7051e5f5 = "2"
    SettingString ID_0x705fafec = "2009-01-01 00:00:00"
    Setting ID_0x708db8c5 = 0x561dde75 InternalSettingFlag=V0
    Setting ID_0x709a1ddf = 0x4b1cd969 InternalSettingFlag=V0
    SettingString ID_0x70b5603f = "D3D"
    Setting ID_0x70edb381 = 0x2420efa8 InternalSettingFlag=V0
    Setting ID_0x80303a19 = 0x00000000
    Setting ID_0x80857a28 = 0x00000000
    Setting ID_0x809d5f60 = 0x00000000
EndProfile

添加该配置文件后,保存 txt 文件,然后返回配置文件管理器,然后单击导入和 select 您刚刚保存的 txt 文件。然后尝试再次打开您的应用程序。

您可能希望在初始导出时保留原始配置文件的备份,以防您搞砸了。

此外,每次更新驱动程序时可能都必须这样做(虽然尚未确认,但我想配置文件会被覆盖)