진행중인 사항중
다수의 유저가 영상통화를 진행 하는 기능이있습니다.
현재 말하는 유저가 스크린 전체 크기의 subscriber가 되고 카메라 스트림이 보여집니다.
나머지 유저들은 화면 하단의 작은 사각형 GLSurfaceview로 보여지죠.
유저 a 카메라 스트림(전체화면) (상단 박스는 유저 b, c, d의 카메라 스트림 3개) |
이런식의 구성입니다.
그런데 a,b,c,d 유저의 카메라 스트림 모두 GLSurfaceview로 보여주고,
b, c, d 유저의 GLSurfaceview가 a유저의 GLSurfaceview를 ovalay하면서 문제가 생깁니다.
b, c, d유저의 GLSurfaceview에 각각 이름을 넣으려고 textview를 add 했지만 보여지지 않습니다. 이유는 surfaceview의 특성때문이죠. window에 구멍을 뚫고 surface의 내용을 보여주는 특성때문에 widget이 무시됩니다.
이를 해결하기 위해서 함수를 제공하는데요, setZOrderMediaOverlay(boolean) 함수입니다.
GLSurfaceView.setZOrderMediaOverlay(true); 일 경우 surfaceview위에 widget을 올릴 수 있죠.
하지만 현재 문제는 GLSurfaceview위에 GLSurfaceview가 있고, 이 위에 있는 GLSurfaceview위에 Textview를 얹으려고 할 때 a, b, c, d에 모두 setZOrderMediaOverlay(true)함수를 호출하더라도 보여지지 않습니다.
이를 해결하기 위해 결국 GLSurfaceview.Render를 imprementation합니다.
하지만 OpenGL지식이 없으니 힘드네요.
b하나의 GLSurfaceview의 Render를 구현했는데 카메라 스트림은 보이지만 text가 보이질 않는 상황입니다.
미리 set해놓은 bitmap 객체를 rendering하는 부분인데 이걸로는 rendering이 되질 않네요
GLES20.glActiveTexture(GLES20.GL_TEXTURE3);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureIds[3]);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
도움이 될 만한 내용 부탁드립니다!