libGDX Threading (线程)

ApplicationListener中的所有方法都在同一个线程中被调用。这个线程就是能够发生OpenGl调用的绘制线程。对大多数游戏来说在Application.render()方法中同时实现逻辑和绘制已经足够了。
任何直接涉及OpenGL的图形操作都需要在渲染线程中执行。如果不在这个线程中操作的可能会造成不可预料的后果。这是由于OpenGL上下文只在渲染线程中才是活动的。
如果要从一个线程向渲染线程中传递数据的话,我们建议使用Application.postRunnable()。这样就会在下一帧的时候在渲染线程中运行Runnable中的代码,并且是在Application.render()方法被调用之前执行。
new Thread(new Runnable() {
   @Override
   public void run() {
      //在这里做一些跟渲染线程异步的操作,比如更新游戏数据等操作,以提高游戏效率
      final Result result = createResult();
      // 向渲染线程中发送一个Ruunable对象,以处理上面代码的结果
      Gdx.app.postRunnable(new Runnable() {
         @Override
         public void run() {
            // 处理结果,比如讲result加入到ApplciationListener中的List<Result>集合中
            results.add(result);
         }
      });
   }
}).start();

libGDX中的哪些类是线程安全的?

在libGDX中没有线程安全的类,除非在类文档中明确表明了其实安全的。
我们建议你在涉及到图形和音频处理的时候不要进行多线程操作,比如在多线程中使用scene2D组件是非常危险的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值