android - libgdx:当我使用 Shaperenderer 添加 Actor 时,为什么我的所有 Actor 都没有渲染?

标签 android opengl-es libgdx

我正在将一个 Actor 添加到一个组中,这导致我的所有 Actor 都无法显示。 actors 绘制方法使用 Shaperenderer,如下所示

@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();
}

每当我删除 Actor 时,组中的所有其他 Actor 都可以毫无问题地表演。我该如何解决这个问题?

最佳答案

您不能交错 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();
}

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

请注意,您正在为执行此操作的每个 actor 导致额外的 SpriteBatch 刷新。

关于android - libgdx:当我使用 Shaperenderer 添加 Actor 时,为什么我的所有 Actor 都没有渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313831/

相关文章:

Android:setOnLongClickListener() 不可靠

android - Xamarin.Forms:具有 CSS 转换和 JS 滑动的页面在 Android WebView 自定义渲染器中不起作用,而在 Chrome 中起作用

rotation - LibGDX - 自身旋转 SpriteBatch

java - 在 Libgdx 库中使用 getSpectrum()

Android和使用sqlite的两点之间的距离

android - 使用六边形网格提高绘图性能

android - 在 Android 上的 OpenGL 程序中调用 glViewport 是必要的吗?

iphone - 如何慢慢抚摸露出路径?

java - 使用 libgdx 实现应用内计费

android - 在Android上以编程方式绘制带有边框(角半径)的椭圆形