2

我一直在尝试使用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 方法调用和处理更新方法有任何建议吗?我认为这将涉及生成第二个调用更新的线程,但我不知道如何保证它与 onDrawFrame 方法正确同步。有人对如何处理这个有任何建议吗?

4

1 回答 1

0

onDrawFrame() 无论如何都会被 Android 调用。只需将您的游戏逻辑放入该方法中即可。您不应该使用另一个线程来执行此操作,因为您会遇到游戏逻辑和渲染之间的同步问题。

于 2012-04-17T08:49:27.667 回答