小编Gus*_*iel的帖子

使用OpenGL将游戏逻辑与Android的快节奏游戏分离的最佳方法是什么?

我一直在学习和制作小游戏,最近我决定尝试为Android开发游戏.

对我来说,从本机C++代码跳转到Android Java并不是那么难,但是让我头疼的是如何考虑如何将逻辑与渲染分开.

我一直在这里和其他网站上阅读:

最好不要为它创建另一个线程,因为Android肯定没有处理问题.

意思是代码是这样的:

public void onDrawFrame(GL10 gl) {
    doLogicCalculations();
    clearScreen();
    drawSprites();
}
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否是最好的方法.因为如果我将逻辑放在GLRenderer::onDrawFrame方法中,我不认为我会这样.据我所知,这个方法只是为了绘制,如果我把逻辑放在那里,我可能会减慢帧的速度.更不用说在我的理解中它伤害了POO的概念.

我认为使用线程可能就是这样,这就是我的计划方式:

主要活动:

public void onCreate(Bundle savedInstanceState) {
    //set fullscreen, etc

    GLSurfaceView view = new GLSurfaceView(this);
    //Configure view

    GameManager game = new GameManager();
    game.start(context, view);

    setContentView(view);
}
Run Code Online (Sandbox Code Playgroud)

游戏管理:

OpenGLRenderer renderer;
Boolean running;
public void start(Context context, GLSurfaceView view) {
    this.renderer = new OpenGLRenderer(context);
    view.setRenderer(this.renderer);

    //create Texturelib, create sound system...

    running = true;
    //create a thread to run GameManager::update()
}

public void update(){
    while(running){ …
Run Code Online (Sandbox Code Playgroud)

android opengl-es

14
推荐指数
2
解决办法
6807
查看次数

标签 统计

android ×1

opengl-es ×1