2014-02-23 58 views
0

我想用一些按鈕做一個彈出屏幕,與屏幕誰調用此彈出窗口相比,此屏幕很小。從libgdx中當前屏幕的alpha背景彈出

因此,爲了使它看起來更好看,我認爲使用當前屏幕的alpha版本作爲彈出窗口的背景。

我有一些邏輯做 「好」,如:

... 
TextureRegion screenShot = new TextureRegion(ScreenUtils.getFrameBufferTexture()); 
setScreen(new PopupScreen(this, screenShot)); 
... 
PopupScreen的

而且在渲染(),我只呈現截圖PARAM。

這種工作方式就像在桌面版本上超級快速的魅力。

但是,當我在Android上運行這個命令ScreenUtils.getFrameBufferTexture命令很慢:? (在GS4上測試)。

所以問題是:我做錯了什麼或有什麼其他方式來完成這個?

THX所有

回答

0

getFrameBufferTexture是一對夫婦的原因很慢。首先從GPU讀取(通常比寫入GPU效率低),再加上創建新的PixmapTexture對象。如果你看一下the source其相當簡單,你可以編寫一個版本,重用PixmapTexture。但這可能不足以產生重大影響。

我認爲你可能會有更好的運氣讓你的彈出窗口變成「全屏」,但是大多數情況下它們都是以中間的實際內容爲透明的。渲染全屏半透明圖像可能會稍微慢一點,但由於您的遊戲(假設)在菜單啓動時暫停,因此速度緩慢並不重要。 (我還假設現有方法存在的問題是啓動速度慢。)

+0

Thx for your answer。 是的..在android上需要將近1秒來處理getFrameBufferTexture。我已經嘗試了完全透明的這種方法,但由於render()的清晰命令,我無法使它工作:Gdx.gl.glClearColor(1,1,1,0); Gdx.gl.glClear (GL20.GL_COLOR_BUFFER_BIT); 如果我刪除清除..圖像被繪製在每一幀本身:S 有沒有辦法清除當前屏幕,但留下最後一個屏幕? – Vingadero

+0

清除屏幕後,渲染你的遊戲屏幕,然後渲染菜單屏幕(我不覺得它的價值在於不清除渲染屏幕上的遊戲)。 –

+1

Hello @ P.T。感謝你的想法,我做了像你這樣的事情:1)繪製世界遊戲2)暫停世界,並在所有屏幕上繪製一個alpha圖像,3)繪製popoup。不知道這是否是最好的方法,但它是有效的。問候 – Vingadero