[OpenGL]从零开始写一个Android平台下的全景视频播放器——5.3 如何实现分屏效果

Github项目地址

为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本)

回到目录

分屏就是分两个区域显示,以配合眼镜实现一定的3D效果,这两个区域的内容理论上应该不同,但是很多播放器都是使用完全相同的内容进行显示。
实际上,如果只有一路视频输入,那么视差也只能是伪视差

简易版

GLES20.glViewport(0,0,screenWidth/2,screenHeight);
sphere.draw();
GLES20.glViewport(screenWidth/2,0,screenWidth-screenWidth/2,screenHeight);
sphere.draw();

glViewport用来控制显示的区域,由于我们没有清空显示的内容,所以两次绘制会覆盖上一次的内容(按照深度剪裁)
所以分屏还是很简单,只要绘制两次就好了,效果如图:
[OpenGL]从零开始写一个Android平台下的全景视频播放器——5.3 如何实现分屏效果_第1张图片

仔细看会发现有一些变形了,这是因为我们的可视区域和投影矩阵没有保持一致(可视区域的宽减半了)

Matrix.perspectiveM(projectionMatrix, 0, 90, ratio/2, 1f, 500f);

projectionMatrix的修改变成这样,再看看效果如何:
[OpenGL]从零开始写一个Android平台下的全景视频播放器——5.3 如何实现分屏效果_第2张图片

好像正常点,不过不是很明显哈

复杂版

两侧使用不同的MVP矩阵,可以独立控制,视角、视域等都可以根据具体机型自由调节,在此不展开叙述。

Github项目地址
回到目录

你可能感兴趣的:(安卓开发,OpenGL)