我仍然没有找到在相机预览上方显示opengl叠加层的正确方法,

有个骇客,您可以在这里打电话

setContentView(GLSurfaceView)
addContentView(MyCameraSurfaceView)

但它无法正常工作-也就是说,当您切换到其他 Activity 并返回时,opengl图层不会显示在相机预览上。

有很多使用上述方法的教程和示例,但是根本无法按预期工作

有谁知道他们是如何在雷亚尔做的

最佳答案

看来我已经找到了解决问题的方法-setZOrderMediaOverlay函数,下面是我的代码:

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);
}

10-08 12:04