前缓冲区渲染

Android中标准的OpenGLES实现需要三倍于surface的缓冲区。三倍的缓冲区为了增加平滑度而增加了延时。对于大部分App来说,这是一个有争议的折衷。但是对于VR来说,这毫无疑问是很烂的选择。一个消耗大量GPU资源及从来不强制同步的APP会有超过50ms的延时,从eglSwapBuffers()调用到开始更新屏幕的像素,即使它的运行帧率是60Fps。

         Android很可能会提供一个严格的双缓冲区模式,也有概率提供一个交换撕裂选择。但是一个令人失望的事实是,即便这样,当你提交一个buffer给系统时,有可能系统并不会立即做你想要做的事。最后的选择是根本就不要用缓冲区链,而是只用一个缓冲区,你可以在它扫描到显示屏时进行渲染。为了避免画面撕裂,App应该只绘制那些不是正在扫描输出的窗口区域。

         当home键在底部时,手机显示屏内部是按纵向模式从上到下进行扫描的。当在头盔里面时,手机显示屏是从左到有扫描的。VrApi接收显示垂直同步的时间标记事件,用它们来确定在一个特定时间时,显示扫描光栅所在的位置。当前的代码逻辑是当在显示左眼图像时,扭曲右眼的图像,当在显示右眼的图像时,扭曲左眼的图像。这只会带来8ms的延时,从图像的第一个像素开始更新计算。显示器扫描半屏只耗时8ms,所以在每个眼睛延时会有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值