ovr_CreateSwapTextureSetGL 失败 [OpenGL + Oculus 0.8.0 / DK2]
ovr_CreateSwapTextureSetGL fails [OpenGL + Oculus 0.8.0 / DK2]
您可能知道,DK2 支持一种称为直接模式的新模式,可减少延迟,从而改善 VR 体验。当我 运行 当前最新的 0.8.0(beta) SDK 附带的 DK2 示例时,OculusTinyRoom 运行 的 DiredctX11 版本很好。
我的问题:OpenGL(使用 3.3 配置文件)版本使用一个名为 ovrHmd_CreateSwapTextureSetGL() 的函数,该函数 return 是一个具有零纹理的纹理集(但是调用 glGenBuffer 作为后备),return 值为 -1006(ovrServiceError)。
我在 Oculus 开发者论坛上看到很多关于 OpenGL 支持问题的报告。对于早期版本的 SDK,OpenGL 支持从 0.2.4+ 开始被忽略,并且似乎已从 0.5 及更高版本(全部在客户端渲染模式)中解决。没有提到更新的直接模式,除了对于一些人来说,如果他们连接了第二个屏幕,它根本无法工作,即使在 DirectX11 中也是如此。我不是这种情况。
我也看到有人建议 uninstall 来自 NVidia 的 3D Vision 驱动程序,因为它们可能与 Oculus Rift 驱动程序冲突。他们报告说帧率有了显着的提高,尽管我自己也提高了 10%。显然,NVidia 的 GameWorks VR 仅通过安装它就会影响驱动程序性能。不幸的是,卸载它们并不能解决问题。
最新的驱动程序 (361.34) 更新表明改进了 GameWorks VR OpenGL 中的 Oculus 和 OpenGL 支持,以及直接模式支持(甚至对于 SLI 设置,它似乎有相当 impressive results). But that's an NVidia-only solution. AMD has LiquidVR 作为替代。但我还是想使用 Oculus SDK 堆栈。
我同时使用 Geforce 480 和 Titan X。
我回到了某些人似乎遇到的第二个屏幕问题。由于它在 DX11 中对我有用,我认为我的问题不会相似。
在我的研究过程中,我在 reddit 上发现了一些有趣的 forum post,这表明部分问题可能源于使用多个显示器。事实证明,它似乎已针对 DX11 得到修复,但同时并未针对 OpenGL。
所以我可以确认关闭所有连接到辅助卡的辅助屏幕可以解决问题。对于 OpenGL,您必须将所有输出设备连接到同一张卡。
我做了更多测试:
有效的方法:
- 主屏幕和 oculus 都连接到 TitanX(480 未连接)。
- 将屏幕和 Oculus 连接到 Titan 成功了(!)
什么不起作用:
- 将主设备连接到 Titan 并将 Oculus 连接到 480 不起作用。
- 将主设备连接到 480,将 Oculus 连接到 Titan 也不起作用。
所以这似乎是图形设备枚举的驱动程序问题。
注意:这是在我删除 NVidia 3D Vision 驱动程序并更新到 build 361.43 之后,因此它可能仍然与安装它们有关。如果有人能证实这一点,我会很高兴知道。
您可能知道,DK2 支持一种称为直接模式的新模式,可减少延迟,从而改善 VR 体验。当我 运行 当前最新的 0.8.0(beta) SDK 附带的 DK2 示例时,OculusTinyRoom 运行 的 DiredctX11 版本很好。
我的问题:OpenGL(使用 3.3 配置文件)版本使用一个名为 ovrHmd_CreateSwapTextureSetGL() 的函数,该函数 return 是一个具有零纹理的纹理集(但是调用 glGenBuffer 作为后备),return 值为 -1006(ovrServiceError)。
我在 Oculus 开发者论坛上看到很多关于 OpenGL 支持问题的报告。对于早期版本的 SDK,OpenGL 支持从 0.2.4+ 开始被忽略,并且似乎已从 0.5 及更高版本(全部在客户端渲染模式)中解决。没有提到更新的直接模式,除了对于一些人来说,如果他们连接了第二个屏幕,它根本无法工作,即使在 DirectX11 中也是如此。我不是这种情况。
我也看到有人建议 uninstall 来自 NVidia 的 3D Vision 驱动程序,因为它们可能与 Oculus Rift 驱动程序冲突。他们报告说帧率有了显着的提高,尽管我自己也提高了 10%。显然,NVidia 的 GameWorks VR 仅通过安装它就会影响驱动程序性能。不幸的是,卸载它们并不能解决问题。
最新的驱动程序 (361.34) 更新表明改进了 GameWorks VR OpenGL 中的 Oculus 和 OpenGL 支持,以及直接模式支持(甚至对于 SLI 设置,它似乎有相当 impressive results). But that's an NVidia-only solution. AMD has LiquidVR 作为替代。但我还是想使用 Oculus SDK 堆栈。
我同时使用 Geforce 480 和 Titan X。
我回到了某些人似乎遇到的第二个屏幕问题。由于它在 DX11 中对我有用,我认为我的问题不会相似。
在我的研究过程中,我在 reddit 上发现了一些有趣的 forum post,这表明部分问题可能源于使用多个显示器。事实证明,它似乎已针对 DX11 得到修复,但同时并未针对 OpenGL。
所以我可以确认关闭所有连接到辅助卡的辅助屏幕可以解决问题。对于 OpenGL,您必须将所有输出设备连接到同一张卡。
我做了更多测试:
有效的方法:
- 主屏幕和 oculus 都连接到 TitanX(480 未连接)。
- 将屏幕和 Oculus 连接到 Titan 成功了(!)
什么不起作用:
- 将主设备连接到 Titan 并将 Oculus 连接到 480 不起作用。
- 将主设备连接到 480,将 Oculus 连接到 Titan 也不起作用。
所以这似乎是图形设备枚举的驱动程序问题。
注意:这是在我删除 NVidia 3D Vision 驱动程序并更新到 build 361.43 之后,因此它可能仍然与安装它们有关。如果有人能证实这一点,我会很高兴知道。