안드로이드 앱에서 사용하는 OpenGL ES 뷰인 SurfaceView의 배경을 투명하게 하고자 시행착오를 좀 겪었는데
최종적으로 얻은 결과는 결과적으로 뷰의 배경은 투명하게 할 수 있었으나, SurfaceView가 무조건 레이아웃의
최상단을 차지하게 된다는 점이다.
구현방법은 우선 SurfaceView 클래스를 참조하는 부분에서
setZOrderOnTop(true);
setEGLConfigChooser(8,8,8,8,16,0);
getHolder().setFormat(PixelFormat.RGBA_8888);
getHolder().setFormat(PixelFormat.TRANSLUCENT);
네가지 요소를 추가한다. PixelFormat.TRANSLUCENT의 경우에는 추가해주지 않아도 투명한 배경을 만드는데
필수적인진 않을 것이다.
다음은 직접적으로 그리는 부분들이 선언돼 있는 SurfaceView 클래스에서
onSurfaceCreated() 의 첫부분에
그리고 onDrawFrame() 의 마지막 부분에
gl.glClearColor(0f, 0f, 0f, 0f);
를 추가하면 된다.
겨우 배경을 투명하게 하는데는 성공했는데, 최상단에만 위치하게 된다는 점에서 도로 무용지물이 되버린 느낌이다..
(SurfaceView 위에 그려야 하는 요소가 있어서)
setZOrderOnTop 옵션 대신에 다른 옵션으로 이를 해결할 수 있는지 알게 되면
최상단으로 올리지 않고도 투명 배경을 적용할 수 있을텐데.. 가능한 건지는 좀 더 봐봐야겠다.
< 참조 >
'GRAPHICS > OpenGL ES' 카테고리의 다른 글
[OPENGL ES] OpenGL ES 1.0, Batchinig으로 프레임 속도 압도적으로 개선하기 (0) | 2018.07.18 |
---|---|
[OPENGL ES] FloatBuffer allocation 관리를 통한 그래픽 최적화 (0) | 2018.04.02 |
[OPENGL ES] 안드로이드 액티비티 이동간 출력해 준 그래픽 유지하기 (0) | 2018.02.14 |
[OPENGL] 특정 변수값에 따른 HSV 형식 색 표현을 RGB를 이용해 해보기 (0) | 2018.01.30 |
[OPENGL ES] 모델간 겹치는 상황에서 색이 깨지지 않게 하기 (0) | 2018.01.22 |