在Libgdx(Android)中,当精灵超出相机视野时,它会自动停止绘制吗?

3
当使用camera.translate(-x,-y)方法时,它是否自动不绘制视图外的精灵,还是我必须手动不绘制相机视图之外的精灵?
3个回答

1
如果您正在使用舞台,则会为您执行此操作:
从Libgdx API中,Groups绘制方法:
绘制所有子项。如果transform为true,则应在调用applyTransform(Batch, Matrix4)之前和resetTransform(Batch)之后调用此方法。如果transform为false,则不需要调用这些方法,当绘制时,子项位置临时偏移组位置。如果设置了裁剪区域,则此方法避免完全绘制位于裁剪区域之外的子项
因此,如果没有舞台,您需要手动执行此操作。

谢谢您的回复...但是我没有使用舞台,而是直接将精灵绘制到屏幕上。 - John Michael Macias

0

虽然它已经被绘制,但是它的GPU开销会更低,因为它不必对该精灵的任何片段运行片段着色器。CPU开销是相同的。

手动检查精灵并剔除超出摄像机视锥体范围的精灵是否有意义,取决于您可以同时执行多少个操作。如果您必须手动检查每个单独的精灵,则很可能不值得,因为您将花费与将它们绘制在屏幕外一样多的CPU开销来检查它们。但是,如果您可以快速检查它们的组合,则可能值得。


-1

如果你使用的是标准正交相机,并且除了平移之外没有进行任何过于复杂的操作,那么它应该会自动完成这个功能。但这可能取决于所有设置的具体情况。

为了确保,你可以尝试在房间内外绘制大量精灵时测试性能。

还有一个叫做ScissorStack的工具; https://github.com/libgdx/libgdx/wiki/Clipping%2C-with-the-use-of-scissorstack


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接