在 Google 纸板上进行畸变校正的单眼渲染

Monocular Rendering With Distortion Correction on Google Cardboard

我正在使用硬纸板做一些不需要同时观察双眼的东西。因为我不需要同时使用两个视图,所以我想通过不绘制第二个 OpenGL 纹理来节省资源。

有没有办法在启用畸变校正的情况下进行单目渲染?我知道将 VRModeEnabled 设置为 false 会启用单眼渲染,但会禁用失真校正。我注意到 "renderers who need to handle all the stereo rendering details by themselves" 有一个 CardboardView.Renderer class,但我不确定这意味着什么或如何单独使用渲染器 class。我尝试将 StereoRenderer 换成 Renderer,但没有绘制任何东西。

这是 CardboardView.Renderer 的文档:

https://developers.google.com/cardboard/android/latest/reference/com/google/vrtoolkit/cardboard/CardboardView.Renderer

您需要实现一些不同的功能,主要是 onDrawFrame() 方法,以便此界面可以绘制任何东西。这就是为什么你什么都看不到的原因。

CardboardView.Renderer.onDrawFrame() 方法可让您绘制一只眼睛、两只眼睛或两只眼睛都不画。但是,此接口可能无法满足您的要求,因为失真通道仍然假设您为每只眼睛绘制的内容都进入了帧缓冲区的左 and/or 右半部分。这是因为 CardboardView 旨在校正 镜头的畸变。

一个简单的解决方案是当 eye.getType() 等于 1(左眼)或 eye.getType() 等于 2(右眼)时只执行 onDrawEye 方法。

如果您只想显示左眼:

@Override
public void onDrawEye(Eye eye) {
    if(eye.getType()==1) {
        //left eye code
    }
}