如何解决谷歌 VR 帧缓冲
我已经集成了一个后处理管道,它也适用于 GLSurfaceView。 但现在我想把它集成到我的 VR 游戏中,结果只有一个黑屏。 如果我关闭 distortionCorrection,我会得到正确的显示,但只有一只眼睛。
在 Google 文档中它说:
如果启用了失真校正,则 GL 上下文将被设置为在此调用时绘制到由纹理支持的帧缓冲区中,因此如果实现者需要更改某个渲染阶段的帧缓冲区,则实现者必须之后将帧缓冲区重置为通过 glGetIntegerv(GL_FRAMEBUFFER_BINDING,...) 获得的帧缓冲区。
我试过这个,但我只在一只眼睛(一侧)上得到的图像太小。
这是我的帧缓冲区绑定和解绑代码:
int[] frame = new int[1];
int[] read = new int[1];
public void bindFrameBuffer() {
glGetIntegerv(GL_FRAMEBUFFER_BINDING,frame,0);
glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING,read,0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,frameBuffer);
glViewport(0,width,height);
}
public void unbindFrameBuffer() {
glBindFramebuffer(GL_FRAMEBUFFER,0);
glBindFramebuffer(GL_FRAMEBUFFER,frame[0]);
glBindFramebuffer(GL_READ_FRAMEBUFFER,read[0]);
glViewport(0,ProgressusRenderer.getWidth(),ProgressusRenderer.getHeight());
}
其中 frameBuffer 是我要绑定的帧缓冲区 ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。