Blog

GLSurfaceView 커밋 읽기 #1

December 21, 2013

GLSurfaceView 커밋 읽기 #1

이 글은 예전에 구글 플러스에 올렸던 글을 다시 정리하며 시작합니다. 예전에 2개 커밋에 대해 분석한 것을 먼저 옮기고 그 후에 새로운 커밋에 대해서도 정리하려 합니다.

저는 GLSurfaceView를 사용하며 버그도 많이 만나보고 당해왔던(?)것 들도 많습니다. 그래서 GLSurfaceView를 조금 더 잘 파악하기 위해 커밋 단위로 분석해 보려 합니다.

오늘의 타겟입니다.

commit 29e0bd2f5a80fdfe0e5b482a1df86363afcecbfa
Author: Mathias Agopian 
    GLSurfaceView defaults to 888 instead of 565

이번 커밋부터 565가 아닌 888으로 바뀐 것입니다. 픽셀 포맷을 말할때는 보통 RGBA나 RGB를 이야기하는데요. 여기에서 세자리만 이야기한 것은 RGB만 따지는 것입니다. RGB가 각각 565에서 888로 되었다는 것이지요.

@@-968,13+968,13 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
         }
 
     /**
-     * This class will choose a RGB_565 surface with
+     * This class will choose a RGB_888 surface with
      * or without a depth buffer.
      *
      */
     private class SimpleEGLConfigChooser extends ComponentSizeChooser {
         public SimpleEGLConfigChooser(boolean withDepthBuffer) {
-            super(5, 6, 5, 0, withDepthBuffer ? 16 : 0, 0);
+            super(8, 8, 8, 0, withDepthBuffer ? 16 : 0, 0);
         }
     }

코드를 보시면 EGLConfigChooser에서 5,6,7를 선택하던 것을 8,8,8로 선택하는 것을 볼 수 있습니다. 아주 간단한 변경이죠. 이제 용량을 위해서 저 화질 그래픽을 사용하려면 별도로 픽셀 포맷을 바꿔줘야 하게 되었습니다.

setRender가 호출되기 전에 EGLConfigChooser를 설정하지 않으면 기본으로 SImpleEGLConfigChooser가 선택되게 되는데요. 이 인스턴스는 mEGLConfigChooser에 설정되어 GLSurfaceView가 픽셀 포맷으로 활용하게 됩니다.

같이 읽기