这中间经过了大概这么几个步骤:
传感器采集运动输入数据
采集到的数据进行过滤并通过线缆传输到主机
游戏引擎根据获取的输入数据更新逻辑和渲染视口
提交到驱动并由驱动发送到显卡进行渲染
把渲染的结果提交到屏幕...VR中的感觉非常明显, 可能某个物体的位置已经差了几十个像素了
以Oculus Rift(消费版)为例, 1080x1200x2的屏幕分辨率, 90Hz的刷新率, 再加上因为变形所需要的UpSampling...这里我们仍然假设60Hz, 每帧时间16.67ms(约17ms), 忽略硬件延迟
如果在游戏逻辑过程中(1ms时)采样传感器数据, 那延迟大约就是16ms
如果在渲染线程进行绘制之前...那有没有办法在渲染完成之后, 提交到屏幕之前再次采样一次传感器数据呢? 如果像下图那样的话, 延迟可以缩短到3ms!!!..., 我们可以把所有像素变换到世界空间, 再根据新的摄像机位置, 重新计算每个像素的屏幕坐标, 生成一幅新的图像:
可以看到之前被遮挡区域的像素是缺失的, 因为我们的摄像机位置变化了.