我正在构建一个 openGL ES 2 游戏,在 Android 上使用 Java。
我目前有两个线程。Android UI 和 openGL。
据我了解,为了获得最佳性能,我需要另外一个线程来处理游戏逻辑,这样openGL线程才能尽可能快地渲染。
这将给我留下 3。Android UI、openGL 和游戏逻辑。(我们称它们为 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,然后重新启动两者。
对不起,如果这有点令人困惑的措辞..
说明我的想法:
图 http://img840.imageshack.us/img840/2816/stackoverflowthredpictu.jpg
为了澄清我的问题:-以这种方式布置事情会奏效吗?——如果没有,什么会更好?
- 我应该查看哪些特定主题来完成此任务?--ie 我不知道如何创建线程或在它们之间发送信息。
这是我第一次在这里提问,希望我做的正确。:) 谢谢!