LibGDX:在render方法中创建和处理ShapeRenderer?

时间:2015-04-26 09:54:04

标签: java libgdx

我正在使用ShapeRenderer对象在我的游戏中创建颜色渐变(Screen类)。分配的内存用于永久增长,直到我在每次调用后开始处理ShapeRenderer对象。如何重用我的颜色渐变?有没有办法将渐变绘制到纹理中(仅在渲染方法中重复使用一次)?

public void render(float deltaTime) {
    camera.update();
    batch.setProjectionMatrix(camera.combined);

    ShapeRenderer shapeRenderer = new ShapeRenderer();
    shapeRenderer.setProjectionMatrix(camera.combined);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.rect(0, 0, screenWidth, screenHeight, topColor, topColor, bottomColor, bottomColor);
    shapeRenderer.end();
    shapeRenderer.dispose();

    batch.begin();
    ...
    batch.end();
}

1 个答案:

答案 0 :(得分:2)

虽然看起来你已经解决了你的问题,但这里只是一个小小的注释,你和任何在这篇文章中遇到类似问题的人都会磕磕绊绊。

不要不惜一切代价,在每次循环运行期间不要实例化新对象(任何类型)。你遇到减速的原因正是因为这个原因。每次实例化一个新对象然后停止使用它时,JVM的垃圾收集器都需要摆脱该对象。您应该始终尝试重用对象。这就是poolsmemory management一般(这些链接特别针对LibGdx)非常重要的原因。

你为ShapeRenderer创建一个字段的想法很好,只是不要忘记在游戏的dispose()方法中dispose()