2012-01-24 27 views
5

todavía no he encontrado una forma adecuada para mostrar un revestimiento superior oon OpenGL de la previa de la cámara,superposición de OpenGL en vista de la cámara

Hay un corte, donde se llama a

setContentView(GLSurfaceView) 
addContentView(MyCameraSurfaceView) 

pero doesn' t funciona correctamente, es decir, cuando cambia a otra actividad y regresa, la capa de OpenGL no se muestra sobre la vista previa de la cámara.

hay una gran cantidad de tutoriales y muestras que utilizan el método anterior, pero simplemente no funciona como se esperaba

¿alguien sabe cómo lo hacen en Layar

Respuesta

9

Parece que he encontrado la solución a mi problema - su función setZOrderMediaOverlay, aquí está mi código:

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

¿Alguna vez consideró que cuando Al cambiar a otra actividad, ¿estás perdiendo el contexto de OpenGL desde la superposición glsurface?

+0

Ese no es el problema - He creado dos puntos de vista con 150 margen dp, uno alineado a la derecha, y el otro alineado a la izquierda, y ambos estaban bien, pero la vista de la cámara estaba sobre GLSurvaceView. Por suerte, creo que encontré la solución: ver mi respuesta. – imbryk

Cuestiones relacionadas