【问题标题】:How to create an update method for an android 3D game framework?如何为 android 3D 游戏框架创建更新方法?
【发布时间】:2012-04-16 14:03:43
【问题描述】:

我一直在尝试使用 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 方法正确同步。有人对如何处理这个问题有任何建议吗?

【问题讨论】:

    标签: java android multithreading opengl-es


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    相关资源
    最近更新 更多