Android 从libgdx中的当前屏幕弹出alpha背景

Android 从libgdx中的当前屏幕弹出alpha背景,android,performance,libgdx,Android,Performance,Libgdx,我想做一个带有一些按钮的弹出式屏幕,这个屏幕比调用这个弹出式屏幕的屏幕小 所以,为了让它看起来更好,我想使用当前屏幕的alpha版本作为弹出窗口的背景 我在一些逻辑方面做得“很好”,比如: ... TextureRegion screenShot = new TextureRegion(ScreenUtils.getFrameBufferTexture()); setScreen(new PopupScreen(this, screenShot)); ... 在弹出屏幕的render()上,我

我想做一个带有一些按钮的弹出式屏幕,这个屏幕比调用这个弹出式屏幕的屏幕小

所以,为了让它看起来更好,我想使用当前屏幕的alpha版本作为弹出窗口的背景

我在一些逻辑方面做得“很好”,比如:

...
TextureRegion screenShot = new TextureRegion(ScreenUtils.getFrameBufferTexture());
setScreen(new PopupScreen(this, screenShot));
...
在弹出屏幕的render()上,我只渲染屏幕截图参数

这就像一个魅力桌面版,超快速

但是当我在安卓上运行这个。。命令ScreenUtils.getFrameBufferTexture非常慢:?(在GS4上测试)

所以问题是:我做错了什么,或者有没有其他方法可以做到这一点


由于几个原因,Thx all

getFrameBufferTexture
速度较慢。首先,它从GPU读取数据(通常比向GPU写入效率低得多),然后创建新的
Pixmap
Texture
对象。如果你看它非常简单,你可以编写一个重用
Pixmap
Texture
的版本。但这可能不足以产生重大影响


<>我想你最好把弹出的弹出“全屏”,但是大部分都是透明的,以中间的内容为中心。渲染全屏半透明图像可能会有点慢,但由于菜单打开时游戏(可能)暂停,因此速度慢并不重要。(我还假设您现有方法的问题是起步太慢。)

谢谢您的回答。是 啊在android上,处理getFrameBufferTexture几乎需要1秒。我尝试过这种完全透明的方法,但由于render()的clear命令:Gdx.gl.glClearColor(1,1,1,0);Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);如果我把枪拿开。。图像在每一帧上都被涂上了颜色:S有没有办法清除当前屏幕但将最后一个屏幕留在后面?清除屏幕后,渲染游戏屏幕,然后渲染菜单屏幕(我认为不在渲染时清除屏幕不值得玩游戏)。您好@P.t.谢谢您的想法,我做了一些像你说的:1)绘制世界游戏2)暂停世界,在整个屏幕上绘制alpha图像,3)绘制popop。我不知道这是不是最好的方法,但它是有效的。当做