【问题标题】:libgdx: Why do all my actors not render when I add an actor using Shaperenderer?libgdx:当我使用 Shaperenderer 添加一个演员时,为什么我的所有演员都没有渲染?
【发布时间】:2016-07-11 18:33:44
【问题描述】:

我正在将一个演员添加到一个组中,这导致我的所有演员都没有出现。演员的绘制方法是使用Shaperrenderer,如下所示

@Override
public void draw(Batch batch, float parentAlpha) {
    super.draw(batch, parentAlpha);

    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.rectLine(ax, ay, bx, by, 5);
    shapeRenderer.end();
}

每当我删除该演员时,群展中的所有其他演员都没有问题。我该如何解决这个问题?

【问题讨论】:

    标签: android opengl-es libgdx


    【解决方案1】:

    您不能将 SpriteBatch 和 ShapeRenderer 的开始/结束交错。当一个actor的draw方法被调用时,begin()已经在SpriteBatch上被调用了。所以你可以像这样修复你的draw() 方法:

    @Override
    public void draw(Batch batch, float parentAlpha) {
        super.draw(batch, parentAlpha);
        batch.end();
        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        shapeRenderer.rectLine(ax, ay, bx, by, 5);
        shapeRenderer.end();
        batch.begin();
    }
    

    还要确保您已经为形状渲染器设置了投影矩阵。

    请注意,您会为执行此操作的每个演员造成额外的 SpriteBatch 刷新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多