【问题标题】:Stereo rendering a sphere with cardboard用纸板立体渲染球体
【发布时间】:2016-07-18 09:03:27
【问题描述】:

我正在用 Android 中的 Cardboard SDK 制作一个 360 度媒体播放器(实际上我正在使用新的 GoogleVR SDK,但它的工作原理非常相似)。为此,我关注this 代码:

单目视觉和立体视觉在不失真时一切都很好 (cardboardView.setDistortionCorrectionEnabled(false))。但是当我尝试使用失真校正时,它会得出这样的结论:

我在 GVR API 中找到了这个:

如果启用失真校正,则 GL 上下文将设置为绘制 在此调用时进入由纹理支持的帧缓冲区,所以如果 实现者需要更改某些渲染阶段的帧缓冲区 然后实现者必须将帧缓冲区重置为获得的 之后通过 glGetIntegerv(GL_FRAMEBUFFER_BINDING, ...)。

但我不确定这是否相关。

这是我的 onDrawEye 代码:

 /**
 * Draws a frame for an eye.
 *
 * @param eye The eye to render. Includes all required transformations.
 */
@Override
public void onDrawEye(Eye eye) {


    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
    Matrix.multiplyMM(mView, 0, eye.getEyeView(), 0, mCamera, 0);
    Matrix.multiplyMM(mViewProjectionMatrix, 0, mProjectionMatrix, 0, mView, 0);

    mSphere.draw(mViewProjectionMatrix);

    checkGLError("onDrawEye");

}

任何想法如何解决这个问题?非常感谢

(顺便说一句,如果我画一个立方体而不是一个球体,一切都会很好)

【问题讨论】:

    标签: java android opengl-es google-cardboard 360-degrees


    【解决方案1】:

    好的,差不多 2 个月后,我终于解决了我的问题。如果有人想知道如何,这不是 gvr 的问题,而是我如何初始化场景。基本上,我将 Sphere 构造函数中的所有工作都移到了 draw 方法,但着色器初始化。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多