如何使用SpriteBatch直接绘制到屏幕而不是Pixmap?

时间:2017-01-14 17:58:19

标签: java libgdx

我目前正在开发基于窗口系统的游戏(如Windows(OS)资源管理器)。

出于性能的考虑,我只会在脏的时候绘制一个包含所有组件的窗口(必须进行更改)。画一个"脏"窗口渲染图像存储在Pixmap中。因此,下次渲染窗口时,将绘制Pixmap。想象一下,它只是渲染窗口的截图。这实际上会导致更稳定的帧速率。

但这是我的问题: 当窗口背景透明且背景中的某些内容发生变化时,这些更改会与透明窗口的已保存Pixmap(屏幕截图)重叠。

我目前的解决方案是在渲染到Pixmap之前清除背景。但是当我这样做的时候,背景中的所有内容都闪现了一帧。然后我尝试保存到目前为止绘制的所有内容的截图(背景),然后绘制透明窗口,将其保存在Pixmap中,再次绘制背景以及上面的干净Pixmap。正如您可以想象的那样,这会占用过多的渲染时间,导致1080p上的帧数超过50%。

最佳解决方案(imho)将始终将脏窗口直接绘制到Pixmap而不是屏幕。像这样,它总是被绘制成一个空的画布而不会干扰背景。之后,Pixmap将被绘制到屏幕上。而不是Pixmap,ByteArray或任何可比较的东西也可以。

我无法想出这样做的方法,并且在谷歌上找不到任何有用的东西。

〜感谢

0 个答案:

没有答案