2D游戏 - 渲染时或另一个线程中的计算?

时间:2012-08-31 14:54:54

标签: java multithreading 2d render libgdx

我目前正在使用LibGDX进行Android项目,但我认为这个问题的答案对于您使用的任何框架/库或语言都很有用。

我在互联网上找到的所有教程(对于LibGDX)都会在调用整个应用程序的render()方法时进行计算,就像在绘制每个实体之前一样。我认为这可能是必要的,因为例如如果你有一个物体在调用render()方法时应该以3米/秒的速度移动你会做position.y = velocity.y * deltaTime这样的事情,所以运动根据速度有意义对象。

但是像 - >这样的计算呢? AI控制的物体应该遵循什么样的路径,不要撞到墙壁或根据玩家的动作?在2D中,甚至更多的3D,可能会有很多计算,化学操作等......并且结果与deltaTime没有关联,也不需要注意它。此外,这可能会降低渲染速度,因此在某些功能不强大的手机或平板电脑上运行时应用程序也会变慢。

这种类型的计算应该在渲染时完成,还是只在另一个Thread中需要时才能完成?

1 个答案:

答案 0 :(得分:1)

实际上,您通常只希望在显示线程中使用 特定于渲染的内容。显然,这本身仍然相当激烈。但是,更新单元在物理模拟,AI计算等方面的位置应该在一个单独的线程中(取决于系统资源和架构,每个一个) - 你希望渲染线程尽可能快。 / p>

还有一种叫做问题分离的东西 - 如果你在屏幕上更新一个对象的位置(重新绘制),并在同一个线程中移动它,那么它正在做两个的事情,哪些可能使未来的修改/维护更加困难。

请注意,如果 正在进行多线程架构,那么您的设置需要有一些方法可以确保在渲染时不会更新内容,或者您​​可能会得到一些奇怪的结果。