【问题标题】:LibGDX Sprite Batching and adding in new sprites at runtimeLibGDX Sprite Batching 并在运行时添加新的 sprite
【发布时间】:2013-12-09 08:14:29
【问题描述】:

我是一名使用 libgdx 引擎的新程序员,我想知道 sprite 批处理的行为。特别是如何在程序生命周期中将精灵添加到批处理中以进行绘制。到目前为止,所有精灵示例都使用了一些类似于以下内容的代码: batch.begin(); sprite.draw(batch); batch.end(); 等等,我不清楚我将如何绘制不同数量的精灵,因为每个精灵 .draw 必须在批处理中调用......提前感谢您的解释!

【问题讨论】:

  • 看一下舞台演员系统。它确实已经实现了一个“阶段”,您可以在其中添加所有演员。通过一个简单的 .draw 舞台,它确实将每个演员绘制在其当前位置和当前状态。您可以查看它的代码以了解系统。也可以看看 gameloop 的概念。
  • 伟大的建议 mind=blast benn!

标签: libgdx sprite spritebatch batching


【解决方案1】:

简单来说,将每次调用 sprite.draw() 视为在某个时间点绘制精灵的请求。每次调用 sprite.draw() 都会将精灵添加到批处理中。当 batch.end() 被调用时,所有添加到批次中的精灵都将被绘制,并且该批次将被清空。由于批处理的内容不是持久的(即,当 batch.end() 被调用时它被清空)所以每次使用时都必须添加精灵和图像。

在下面的示例中,所有要绘制的精灵都存储在一组精灵中,并在每次绘制时添加到批处理中,如果从 render 调用它,则在每一帧() 方法。

batch.begin();
for (sprite : sprites) {
    sprite.draw(batch);
}
batch.end()

实际情况要复杂一些,因为精灵批次会在它满时和在更多情况下刷新,但一个好的经验法则是在每一帧上添加你想要绘制的所有内容。

【讨论】:

  • 这正是我想要的,谢谢你的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多