我想用一些按钮做一个弹出屏幕,与调用此弹出窗口的屏幕相比,这个屏幕很小。
所以,为了让它更好看,我认为使用当前屏幕的alpha版本作为弹出窗口的背景。
我做了一些“好”的逻辑,如:
...
TextureRegion screenShot = new TextureRegion(ScreenUtils.getFrameBufferTexture());
setScreen(new PopupScreen(this, screenShot));
...
在PopupScreen的render()上,我只渲染了screenShot参数。
这就像桌面版上的魅力,超级快。
但是当我在Android上运行它时,命令ScreenUtils.getFrameBufferTexture非常慢:? (在GS4上测试)。
所以问题是:我做错了什么或者还有其他办法来实现这个目标吗?
全部
答案 0 :(得分:0)
getFrameBufferTexture
速度很慢。首先从GPU读取(通常比写入GPU的效率低得多),再加上它创建新的Pixmap
和Texture
对象。如果你看the source非常简单,你可以编写一个重用Pixmap
和Texture
的版本。但这可能无助于产生重大影响。
我认为你可能会有更好的运气使你的弹出窗口“全屏”,但大部分透明,实际内容居中于中间。渲染全屏半透明图像可能会有点慢,但由于您的游戏(可能)在菜单启动时暂停,因此它的速度无关紧要。 (我也假设现有方法的问题是开始很慢。)