|
|
자바소스에서 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 |