opengl overlay on camera view

2019-03-29 09:57发布

问题:

I still haven't found a proper way to show an opengl overlay oon top of camera preview,

There's a hack, where you call

setContentView(GLSurfaceView)
addContentView(MyCameraSurfaceView)

but it doesn't work properly - i.e. when you switch to anouther activity and go back, the opengl layer isnt displayed over camera preview.

there are a lot of tutorials and samples which use the above method, but it simply doesn't work as expected

does anyone know how they do it in layar

回答1:

It looks like I've found the solution to my problem - its setZOrderMediaOverlay function, heres my code:

private void initViews()
{
    mFrame = new FrameLayout(this);
    initCameraView();
    initGLView();
    setContentView( mFrame );
}
private void initGLView()
{
    mRenderer = new MyGLRenderer( this );
    mGLView = new GLSurfaceView(this);
    mGLView.setZOrderMediaOverlay(true);
    mGLView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    mGLView.setRenderer(mRenderer); 
    mGLView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

    mFrame.addView( mGLView );      
}

private void initCameraView()
{
    mCameraSurfaceView = new CameraSurfaceView(this);
    mFrame.addView(mCameraSurfaceView);     
}


回答2:

Did you ever consider that when switching to another activity you are loosing the opengl context from the overlaying glsurface?