1

I just have a quick simple question (it may be fairly obvious to you but I'm rather new to libGDX and graphics in general):

When is it best to call the camera.update() method in libGDX? Specifically, is there anything else in the render method [I do know that I have to call it in the rende-method :-) ] that I definitely want to do before or after updating the camera (e.g. starting the batch)? Or is it just completely up to me?

Thanks for answering,

Tony

4

1 回答 1

3

只要您在开始实际绘制东西之前执行它就没有关系,因为必须在将相机矩阵传递给任何渲染器之前计算它。例如,对于 sprite 批处理,您必须在调用之前的某个时间点更新您的相机,spriteBatch.setProjectionMatrix(camera.combined);这必须在调用之前进行spriteBatch.begin()

当你这样做时,它不会影响性能。无论如何,您不必担心像这样的每帧一次的东西。您的 CPU 瓶颈几乎肯定会出现在您处理数百个精灵或粒子并将它们四处移动然后将它们传递给批处理的地方,或者如果您使用一个物理模拟,则在您的物理模拟中。

cocos3d 的文档说最好先完成所有基于 CPU 的工作,然后尝试快速连续地执行所有绘制调用,以最大限度地并行使用 CPU 和 GPU。我不知道这有多大的不同,以及在 libgdx 中遵循这个指南的可能性有多大。但如果它确实有帮助,那么你在 libgdx 中实现这一点的方法是确保你的 sprite 批次的容量至少与你在一帧中给出的最多 sprite 一样大(所以它不必刷新在你打电话给end()) 之前。如果您正在使用 ModelBatch 和 DecalBatch 进行 3D 绘图,您实际上希望在调用之前spriteBatch.end()和已经将所有精灵添加到批处理之后执行此操作。

于 2014-01-24T20:07:14.013 回答