gpt4 book ai didi

libgdx - spritebatch 是否用单个批处理绘制多个阶段? Libgdx

转载 作者:行者123 更新时间:2023-12-02 04:36:38 25 4
gpt4 key购买 nike

标题说明了一切。

使用同一个 SpriteBatcher 对象调用多个 Stage 的 draw() 方法是否仅发生在单个批处理中,或者它是一个 Stage =一批?

我有一种情况,我不想使用 Actor 作为游戏背景,我只是直接绘制它。但算法看起来像这样。

  1. begin batch
  2. draw background
  3. end batch
  4. call all stage draw

如果你的答案是:spritebatch将在一批中绘制多个阶段,那么我可以说,将每个 Sprite 作为Actor对象的成员,然后将所有Actor对象添加到Stage对象中,然后是更有效的召集舞台抽签。这样,我可以最大限度地减少对开始批处理和结束批处理的调用,据我所知,这可以提高性能。

最佳答案

查看Stages code ,看起来它调用了 batch.begin()batch.end():

public void draw () {
Camera camera = viewport.getCamera();
camera.update();

if (!root.isVisible()) return;

Batch batch = this.batch;
if (batch != null) {
batch.setProjectionMatrix(camera.combined);
batch.begin();
root.draw(batch, 1);
batch.end();
}

if (debug) drawDebug();
}

因此,将您的 Actor 添加到 Stage 可能会减少绘制调用。
但请记住,如果 Batch 已满,它无论如何都会被 flush() 编辑,这会导致绘制调用。
所以它不一定会减少绘制调用的数量。另外,只要没有性能问题,就不要过多考虑性能。如果其他解决方案看起来“更干净”,我想不值得改变它。
需要记住的一件重要的事情是,在处理多个 Batch 时,先调用 end() ,然后再调用 begin()另一个。您永远不应该同时“运行”2 个Batch

关于libgdx - spritebatch 是否用单个批处理绘制多个阶段? Libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com