본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] OpenGL 사용하기 위한 GLSurfaceVIew 생성 기본골격.

by 돼지왕 왕돼지 2012. 2. 10.
반응형

안녕하세요 돼지왕왕돼지입니다.
오늘은 안드로이드에서 OpenGL 3D Graphics 를 활용하기 위해 사용되는 GLSurfaceView 의 생성 기본골격에 대해 알아보고자 합니다. 
 
 
 

준비물


1. Activity class
2. GLSurfaceView 를 extend 한 class
3. GLSurfaceView.Renderer 를 implemente 한 class 

public class OpenGLTestActivity extends Activity { ... }
public class OpenGLTestView extends GLSurfaceView { ... }
public class OpenGLTestRenderer implements GLSurfaceView.Renderer { ... } 





준비물들 연결하기.


1. Activity 에서 GLSurfaceView 만들고, setContentView로 해당 view 지정.


public class OpenGLTest extends Activity{
   @Override
   public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       OpenGLTestView glTestView = new OpenGLTestView( this );
       setContentView(  glTestView );
   }
}


2. GLSurfaceView 의 Constructor 에서 Renderer 를 만들고, setRenderer 로 해당 renderer 지정.


public class OpenGLTestView extends GLSurfaceView{
   public OpenGLTestView(Context context){
       super(context);
       OpenGLTestRenderer glTestRenderer = new OpenGLTestRenderer();
       setRenderer( glTestRenderer );
   }
}

 

3. Renderer 에서 3가지 함수를 implement 함.

 

public void onSurfaceCreated( GL10 gl, EGLConfig config );
public void onSurfaceChanged( GL10 gl, int w, int h );
public onDrawFrame( GL10 gl ); 


 onSurfaceCreated, onSurfaceChanged 는 기본 SurfaceView 와 같습니다.
onDrawFrame 은 매번 rendering 될 때마다 불리는데, 이 곳에서 gl 을 이용해서 실제로 draw 하는 역할을 해주죠. 


public class OpenGLTestRenderer implements GLSurfaceView.Renderer{
    public void onSurfaceCreated(GL10 gl, EGLConfig config){
         // config setting.
    }
 
    public void onSurfaceChanged(GL10 gl, int w, int h){
        gl.glViewport(0, 0, w, h);
    }
 
    public onDrawFrame(GL10 gl){
        // Drawing
    }
}


[참고사항]

이로서 안드로이드 Activity 에서 OpenGL 그릴 준비가 끝났습니다. 그럼 모두 즐거운 3D 프로그래밍 하시길~

 
로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글