在Adroid中要同时显示Video,Camera和3D要求如下:
1) Video显示在最后面,且全屏显示
2) 3D显示在中间,且没有图像部分要求透明,即可以在没有3D图形的地方可以看到后面的视频
3) Camera在最上层显示
实现方案如下:
1) 为Video创建一个SurfaceView
2) 为3D创建一个GLSurfaceView
3) 为Camera创建一个SurfaceView
相关参考代码如下:
mediaView = (SurfaceView) findViewById(R.id.media_surfaceview);
cameraView = (SurfaceView) findViewById(R.id.camera_surfaceview);
glView = new GL2JNIView(getApplication(),true,16,0);
//把glView放在中间
glView .setZOrderMediaOverlay(true);
//把cameraView放在最上面
cameraView.setZOrderOnTop(true);
LinearLayout.LayoutParams para = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT);
this.addContentView(mGLView,para);
关于GLSurface透明问题,可参考NDK Samples GL2JNIView.
of course, before reneder a frame, you should call: glClearColor(0,0,0,0)
3D透明关键有两点:
1. GLSurfaceView本身需要设置透明
2. OpenGL Render时需要透明