首页 > 代码库 > 4.6、Libgdx线程介绍
4.6、Libgdx线程介绍
(原文:http://www.libgdx.cn/topic/48/4-6-libgdx%E7%BA%BF%E7%A8%8B%E4%BB%8B%E7%BB%8D)
所有的ApplicationListener方法都在同一线程中调用。这个线程是可以调用OpenGL的渲染线程。对大部分游戏来说,更新逻辑或者渲染一般都放在ApplicationListener.render()方法中。
任何的图像操作都会在渲染线程中操作,在其他线程中造作会导致未定义的行为,这是因为OpenGL context仅仅在渲染进程中可用。
为了从其他线程中传递数据到渲染进程中,我们推荐使用Application.postRunnable()。这将使得会在渲染进程的下一帧运行这些代码,而且是在ApplicationListener.render()被调用之前。
任何的图像操作都会在渲染线程中操作,在其他线程中造作会导致未定义的行为,这是因为OpenGL context仅仅在渲染进程中可用。
为了从其他线程中传递数据到渲染进程中,我们推荐使用Application.postRunnable()。这将使得会在渲染进程的下一帧运行这些代码,而且是在ApplicationListener.render()被调用之前。
new Thread(new Runnable() {
@Override
public void run() {
// 在这完成需要的操作,同步到渲染线程。
final Result result = createResult();
// 将Runnable推送到渲染线程。
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
// 产生结果
results.add(result);
}
});
}
}).start();
@Override
public void run() {
// 在这完成需要的操作,同步到渲染线程。
final Result result = createResult();
// 将Runnable推送到渲染线程。
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
// 产生结果
results.add(result);
}
});
}
}).start();
那个Libgdx类是线程安全的?
在Libgdx中,没有类是线程安全的。除非在官方API中表明。
在Libgdx中,没有类是线程安全的。除非在官方API中表明。
记住,不要把graphics和audio相关的任何操作使用多线程。
(www.libgdx.cn版权所有,如需转载,注明出处)
4.6、Libgdx线程介绍
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。