我正在构建一个openGL ES 2游戏,在Android上使用Java。3 Android线程,如何构造
我目前有两个线程。 Android用户界面和openGL。根据我的理解,为了获得最佳性能,我需要为游戏逻辑创建另一个线程,因此openGL线程可以尽可能快地渲染。
这会让我变成3. Android UI,openGL和Game Logic。 (我们姑且称之为UI,OGL和GL)
纠正我,如果我错了:
UI开始,让OGL和GL。 OGL和GL运行,查询用于输入的UI。 GL发送绘图调用到OGL中的队列。
这里有两种情况。 如果GL比OGL花费更多的时间循环,OGL的下一个循环需要等待GL开始它的下一个循环之前完成,以避免只渲染上一帧的一半调用。 如果OGL需要比GL更长的时间,GL需要等到OGL完成再次开始/发送更多的绘制调用。
要做到这一点:
当GL完成与它的循环,它会检查OGL,看看它做画绘制调用的当前队列。如果是这样,它将启动GL和OGL的下一个循环。如果不是,它会等待。
当OGL完成时,它检查GL。如果GL完成,它将再次启动两个循环。如果不是,则等待GL,完成后将检查OGL,然后再次启动。
很抱歉,如果这是一个有点混淆的措辞..
要illistrate我的想法:
diagram http://img840.imageshack.us/img840/2816/stackoverflowthredpictu.jpg
为了澄清我的问题: - 将会铺设的事情了这样的工作? - 如果不是,哪个更好?
- 什么具体科目我应该看看做到这一点?我不知道如何在它们之间创建线程或发送信息。
这是我第一次在这里问一个问题,希望我做对了。 :) 谢谢!
我对OpenGL并不熟悉,但对于Android上的一般多线程,最好避免使用'AsyncTask',并使用标准Java'Runnable'与Android'Handler'。 –