在Google Cardboard上使用失真校正进行单眼渲染

时间:2015-10-16 21:48:23

标签: android opengl-es-2.0 google-cardboard

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

有没有办法让单眼渲染启用失真校正?我知道将VRModeEnabled设置为false可启用单眼渲染,但它会禁用失真校正。我注意到有一个CardboardView.Renderer类用于“需要自己处理所有立体渲染细节的渲染器”,但我不确定这意味着什么或如何自己使用Renderer类。我尝试为渲染器交换StereoRenderer,但没有画出来。

2 个答案:

答案 0 :(得分:0)

这是CardboardView.Renderer的文档:

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

您需要实现一些不同的函数,主要是onDrawFrame()方法,以便此接口可以绘制任何内容。这就是你什么都看不见的原因。

CardboardView.Renderer.onDrawFrame()方法可让您绘制眼睛,两者或两者。但是,此界面可能无法执行您想要的操作,因为失真传递仍然假定您为每只眼睛绘制的任何内容都会进入帧缓冲区的左半部分和/或右半部分。这是因为CardboardView旨在纠正镜头的失真。

答案 1 :(得分:0)

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

如果您只想显示左眼:

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