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

每当我尝试编译所提供的DirectX示例时,它就可以正常工作,但是当我尝试编译与OpenGL相关的任何内容时,它都会因相同的纹理问题而失败。

如果我尝试编译并运行提供的OculusRommTiny(GL),它将返回“无法创建纹理”并退出。

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

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

  • 我在 Windows 8.1上
  • 我正在使用Microsoft Visual Studio Community 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 forum:

    09-09 21:10