我正在使用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();
}
答案 0 :(得分:2)
虽然看起来你已经解决了你的问题,但这里只是一个小小的注释,你和任何在这篇文章中遇到类似问题的人都会磕磕绊绊。
不要不惜一切代价,在每次循环运行期间不要实例化新对象(任何类型)。你遇到减速的原因正是因为这个原因。每次实例化一个新对象然后停止使用它时,JVM的垃圾收集器都需要摆脱该对象。您应该始终尝试重用对象。这就是pools和memory management一般(这些链接特别针对LibGdx)非常重要的原因。
你为ShapeRenderer创建一个字段的想法很好,只是不要忘记在游戏的dispose()
方法中dispose()
。