如何为Android 3D游戏框架创建更新方法?

时间:2012-04-16 14:03:43

标签: java android multithreading opengl-es

我一直在尝试使用http://www.jpct.net/创建一个Android 3D游戏,它使用opengl轻松渲染3D图形。

我的问题是如何使用3D框架为游戏状态创建更新方法?

我知道Android Activity类有这些命令涉及使用glsurface视图:

protected void onCreate(Bundle savedInstanceState) {
}

@Override
protected void onPause() {
}

@Override
protected void onResume() {
}

@Override
protected void onStop() {
}

public boolean onTouchEvent(MotionEvent me) {

}

然后GLSurfaceView.Renderer类有这些方法。

class MyRenderer implements GLSurfaceView.Renderer {


    public MyRenderer() {
    }

    public void onSurfaceChanged(GL10 gl, int w, int h) {
    }

    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    }

    public void onDrawFrame(GL10 gl) {
    }
}

虽然我能够使用jpct教程绘制图像,响应它们并计算帧速率,但它不会调用更新方法或者有办法确保接近恒定的帧速率,因为它处理用户输入检查在onTouchEvent方法中,我的游戏需要在不触摸屏幕时更新。

有没有人对如何确保使用onDrawFrame方法调用和处理更新方法有任何建议?我认为这将涉及生成第二个调用update的线程,但我不知道如何保证它与onDrawFrame方法正确同步。有没有人对如何处理这个有任何建议?

1 个答案:

答案 0 :(得分:0)

无论如何,

onDrawFrame()将被Android调用。只需将您的游戏逻辑放入该方法即可。你不应该使用另一个线程来做这件事,因为你会遇到游戏逻辑和渲染之间的同步问题。