【问题标题】:How to prepare my game for VR? [closed]如何为 VR 准备我的游戏? [关闭]
【发布时间】:2016-05-19 01:30:10
【问题描述】:

假设我们有一些 C++ OpenGL 游戏。它使用我们自己的引擎进行渲染(也不是 Unity,也不是 UE 等)。让我们简化我们的问题。

例如,我们需要在 VR 模式下渲染一些简单的立方体。我们应该为此做些什么?

我知道我们需要将屏幕分成两部分。但那又如何呢?如何计算两个部分的旋转、距离?

我所说的 VR 是指 VR Box、Gear VR、Oculus Rift 等设备。

【问题讨论】:

    标签: virtual-reality


    【解决方案1】:

    所有主要头显的网站上都有 API 文档,说明如何将 VR 支持集成到您的引擎中。您应该参考该文档以获取详细信息。我的经验主要是使用 Oculus SDK,但其他 SDK 类似。

    您通常不会自己直接将屏幕一分为二 - 您向 SDK 提供具有左右眼视图的图像,SDK 对镜头光学进行变形并将输出发送到 HMD 显示器。

    SDK 提供 API 来获取渲染每只眼睛视图所需的相机和视口参数。使用 Oculus SDK,您还可以通过 API 调用获取每个眼睛视图的渲染目标。您可以根据 API 提供给您的 HMD 位置、方向、视野、目标分辨率等信息构建视图和投影矩阵并为每个眼睛视图设置视口。

    每只眼睛的渲染基本上与您在引擎中所做的任何事情相同,但当然您必须使用 SDK 提供的相机和视口信息渲染两次(每只眼睛一次),并且可能希望渲染一个在常规监视器上显示的第三个视图。您可能希望重组引擎的某些部分以提高效率,因为左右眼视图非常相似,而不是天真地渲染整个场景两次,但这并不是绝对必要的。

    可能会在帧结束时调用通知 SDK 您已完成渲染并提交完成的眼睛缓冲区以供显示。除此之外没有那么多。 VR 渲染的大部分挑战在于实现所需的性能,而不是集成在显示方面相当简单的 SDK。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多