【发布时间】: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