ovr_CreateSwapTextureSetGL失败[OpenGL + Oculus 0.8.0 / DK2]

时间:2016-01-07 08:43:57

标签: opengl oculus

您可能知道,DK2支持一种称为直接模式的新模式,可以减少延迟,从而改善VR体验。当我运行当前最新的0.8.0(beta)SDK附带的DK2样本时, OculusTinyRoom 的DiredctX11版本运行正常。

我的问题:OpenGL(使用3.3配置文件)版本使用一个名为 ovrHmd_CreateSwapTextureSetGL()的函数,它返回纹理集为零纹理(但调用 glGenBuffer 作为后备),返回值为-1006(ovrServiceError)。

我已经看到很多关于Oculus开发者论坛上有问题的OpenGL支持的报道。对于SDK的早期版本,OpenGL支持从0.2.4+中忽略,并且似乎已从0.5及更高版本(所有在客户端呈现模式中)解析。没有人说过更新的直接模式,除了对某些人来说,即使在DirectX11中,如果连接了第二个屏幕,它根本无法工作。对我来说情况并非如此。

我也看到人们建议 uninstall 来自NVidia的3D Vision驱动程序,因为它们可能与Oculus Rift驱动程序冲突。他们报告了戏剧性的帧率改进,尽管我自己获得了10%的提升。显然,NVidia的GameWorks VR只是通过安装它来扼杀驱动程序性能。不幸的是,卸载它们并不能解决问题。

最新的驱动程序(361.34)更新表明改进了Oculus和OpenGL对GameWorks VR OpenGL的支持,以及直接模式支持(即使对于SLI设置,它似乎非常impressive results)。但那是一个仅限NVidia的解决方案。 AMD有LiquidVR作为替代方案。但我还是喜欢使用Oculus SDK堆栈。

我正在使用Geforce 480和Titan X.

1 个答案:

答案 0 :(得分:0)

我回到了第二个屏幕问题,有人似乎已经有了。因为它在DX11中对我有用,我认为我的问题不会相似。

在我的研究过程中,我在reddit上发现了一些有趣的forum post,表明部分问题可能源于使用多个监视器。事实证明它似乎已经修复了DX11,但同时不适用于OpenGL。

所以我可以确认关闭连接到辅助卡的任何辅助屏幕可以解决问题。对于OpenGL,您必须将所有输出设备连接到SAME卡。

我做了一些测试:

什么有效:

  • 主屏幕和眼睛都连接到TitanX(480没有连接)。
  • 将两个屏幕和Oculus连接到Titan工作(!)

什么行不通:

  • 将主要部分连接到Titan,将Oculus连接到480不起作用。
  • 将主要设备连接到480并将Oculus连接到Titan也不起作用。

所以它似乎是图形设备枚举的驱动程序问题。

注意:这是在我删除NVidia 3D Vision驱动程序并更新为构建361.43之后,因此它可能仍然与安装它们有关。如果有人能证实这一点,那就太好了。