0
我使用ShapeRenderer
对象在我的游戏中创建颜色渐变(Screen
类)。分配的内存用于永久增长,直到我在每次调用后开始处理我的ShapeRenderer
对象。我如何重用我的颜色渐变?有没有办法将渐变绘制到纹理中(仅在渲染方法中重复使用一次)?LibGDX:在渲染方法中创建和配置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();
}
我不会在飞行中渲染此图像,而是提供预制图像。然而,如果你想继续这样做,你可以使用['Framebuffer'](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/FrameBuffer .html)将其渲染为纹理以供重用。 – noone
作为一个小改进,我使shapeRenderer成为一个类变量,因此我不需要再处理它(在'render'方法中)。使用'Framebuffer'听起来不错(尽管我仍然不知道如何做到这一点)。我宁愿随时创建渐变,因为我需要许多不同的渐变。这也应该具有这样的优点,即即使在超高dpi设备上,渐变看起来也更平滑(与缩放纹理相比)。 – MaxGyver
对于制作1px宽度和不同高度的颜色渐变图像,然后将它们缩放到屏幕宽度,您有什么想法?那会过度优化吗? – MaxGyver