无法为Oculus Rift创建OpenGL交换纹理



我正试图在OpenGL上下文中使用Oculus SDK for Windows (8.0.0)来设置我的第一个C/C++ Oculus Rift项目,但我无法使其正常运行。

每当我试图编译所提供的DirectX样本时,它都能完全工作,但当我试图编译任何与OpenGL相关的东西时,它会失败,并出现同样的纹理问题。

如果我试图编译并运行提供的OculusRommTiny(GL),它会返回一个"创建纹理失败"并退出。

而且,当我尝试编译自己的作品时,ovr_CreateSwapTextureSetGL函数总是返回false

以下是一些有用的信息(我想):

  • 我使用Windows 8.1
  • 我正在使用Microsoft Visual Studio社区2015
  • 我的项目返回结果检测到OpenGL 4.5(如果我让它切换到集成显卡,它会返回4.3。是的,它是一台带有专用显卡和集成显卡的笔记本电脑)
  • 我使用8.0.0 Oculus C SDK(我尝试了7.0.0,结果相同)
  • 我使用8.0.0 Oculus Runtime(但我还没有尝试其他版本)
  • 我使用调试HMD模式(我在运行时的Configur Service部分尝试了所有调试设置,结果相同),因为我还无法访问我的Oculus Rift

以下是我关于这个问题的代码摘录:

if (OVR_SUCCESS(ovr_CreateSwapTextureSetGL(session, GL_SRGB8_ALPHA8, bufferSize.w, bufferSize.h, &pTextureSet)))
{
    /*for (int i = 0; i < pTextureSet->TextureCount; ++i)
    { ... }*/
    std::cout << "OK, keep going..." << std::endl;
} else {
    std::cout << "ERROR: failed creating swap texture" << std::endl;
    ovr_Destroy(session);
    ovr_Shutdown();
    return false;
}

你知道如何绕过这个问题吗?非常感谢。

OculusRommTiny(GL)应该可以工作。问题可能出在笔记本电脑的GPU上。这种带有两个GPU的配置,Nvidia的"Optimus"和AMD的"Switchable graphics"在笔记本电脑上很常见,不受支持,大多数时候都无法工作。

在一些特定的笔记本电脑上,可以禁用BIOS中的集成GPU,所以如果可以的话,可以尝试一下。

引用Oculus论坛:

Nvidia GTX 600系列或AMD Radeon HD 7000系列以下的GPU不是支持。此外,笔记本电脑通常得不到很好的支持所有(尤其是如果他们包括Nvidia Optimus或AMD Switchable图形)。

最新更新