|
자바소스에서 GameThread.java를 만들겠습니다.
package pe.berabue.opengl; import android.content.Context; public class GameThread extends Thread { private boolean isRun; public GameThread(Context context) { isRun = true; } public synchronized void run() { while(isRun) { try { MainActivity.mGLView.requestRender(); Thread.sleep(10); } catch (InterruptedException e1) { e1.printStackTrace(); } } } } }딱 한 부분만 중요합니다.
MainActivity.mGLView.requestRender();
requestRender()는 onDrawFrame()함수를 호출해줍니다. 쓰레드가 동작하는동안 지속적으로 onDrawFrame을 호출하겠지요.
MainActivity.java에서 쓰레드를 동작시키겠습니다.
package pe.berabue.opengl; import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; public class MainActivity extends Activity { public static GLSurfaceView mGLView; public static GameThread mThread; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mGLView = new GLView(getApplicationContext()); mThread = new GameThread(getApplicationContext()); setContentView(mGLView); mThread.start(); } static { System.loadLibrary("berabueLib"); } }public static GLSurfaceView mGLView;
private -> public static으로 변경하였습니다. 쓰레드에서 mGLView 객체에 접근하기위해서.
쓰레드 객체를 생성하고 쓰레드를 시작합니다~!
GLGameRenderer.c 에서 이전에 띄운 이미지를 움직여 보도록하겠습니다.
void updateGameLoop() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); updatePanda(); drawPanda(); } void updatePanda() { g_nY = ( g_nY < 0 ) ? 800 - g_nPandaHeight : g_nY-5; }updateGameLoop()안에 updatePanda()를 추가시키고 좌표가 변화되는 코드를 입력합니다.
빌드 후 실행을해보면~!
팬더가 지속적으로 올라가는 화면이 출력됩니다!
|
'Android > OpenGL' 카테고리의 다른 글
[NDK-OpenGL_06] 내맘대로 텍스쳐 ~ (0) | 2012.03.06 |
---|---|
[NDK-OpenGL_05] 2의 제곱수가 아닌 텍스쳐 출력하기 (0) | 2012.03.06 |
[NDK-OpenGL_03] 텍스쳐 입히기 (5) | 2012.02.27 |
[NDK-OpenGL_02] 해상도 지정하기 (3) | 2012.02.26 |
[NDK-OpenGL_01] 프로젝트 준비 (3) | 2012.02.26 |