我认为一定有一个简单的解决方案,但我忽略了。我认为一个选项是FrameBuffer,但不确定是否是最好的。
我正在做一款益智游戏,绘制时需要进行密集的计算。在更新屏幕的同时,我已经尽可能多地进行了尽可能少的计算,但其中一些我做不到,或者处理起来很麻烦。另一方面,大多数时候,用户在试图找出下一步行动时会看着屏幕,屏幕会显示静止图像。因此,每秒运行渲染代码60次只是浪费电池。
在模型没有更改的情况下,阻止绘制的最简单方法是什么?有没有什么方法可以告诉libGDX在显示最后一个渲染图像时暂时停止调用render,或者使用某种虚拟屏幕,我可以在其中绘制,然后将其绘制到屏幕上?
正如我所说,我知道FrameBuffer,但这个对象似乎是用来做比我试图实现的更复杂的事情的。
使用非连续渲染仅按需渲染。文档中有详细说明。
要做的最基本的事情是将其放入onCreate()
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
然后在代码中,每当需要新帧时(例如响应用户输入,或在动画发生时连续调用requestRendering()
)。
每当发生输入操作时,Gdx.graphics.requestRendering()
都会代表您被调用一次,因此您的输入处理器等都会尝试一下。如果他们对输入做出任何响应,也应该调用它。