未能为Oculus Rift创建OpenGL交换纹理

时间:2015-11-26 15:17:57

标签: c++ opengl oculus

我试图在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社区2015
  • 我的项目返回检测到OpenGL 4.5 (如果我让它切换到集成显卡,则返回4.3。是的,它是带有专用显卡和集成显卡的笔记本电脑)
  • 我使用 8.0.0 Oculus C SDK (我尝试使用7.0.0,我的结果相同)
  • 我使用 8.0.0 Oculus Runtime (但我还没试过另一个)
  • 我使用 Debug 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;
}

您对如何绕过此问题有任何线索吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

OculusRommTiny(GL)应该有效。问题可能是笔记本电脑GPU。这种具有两个GPU的配置,用于Nvidia的“Optimus”和用于AMD的“可切换图形”在笔记本电脑上非常常见,并且不受支持且大部分时间都不起作用。

在某些特定的笔记本电脑上,可以在BIOS中禁用集成GPU,如果可以,请尝试使用。

引自Oculus forum

  

Nvidia GTX 600系列或AMD Radeon HD 7000系列以下的GPU不是   支持的。此外,笔记本电脑通常不受支持   所有(特别是如果它们包括Nvidia Optimus或AMD Switchable)   图形)。