3

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

4

1 回答 1

3

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

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

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

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

于 2013-12-09T08:32:33.573 回答