好的,我想用openGL ES 2.0做一個遊戲,但是我有一個控件的問題。直到現在,我的控件與我遊戲中的任何其他精靈一樣,只是繪製它,並且如果相機更新,則控件將在更新之後更新,如使用相機「移動」。OpenGL ES 2.0 |遊戲畫面頂部的GUI屏幕?
有沒有更有效的方法來做到這一點?這裏是我想要做的一個例子:
*遊戲畫面
*控制
然後像趴在遊戲屏幕上方的控制所以即使相機移動也不會移動。可能嗎?也許混合xml?如果是的話那怎麼樣?謝謝!
好的,我想用openGL ES 2.0做一個遊戲,但是我有一個控件的問題。直到現在,我的控件與我遊戲中的任何其他精靈一樣,只是繪製它,並且如果相機更新,則控件將在更新之後更新,如使用相機「移動」。OpenGL ES 2.0 |遊戲畫面頂部的GUI屏幕?
有沒有更有效的方法來做到這一點?這裏是我想要做的一個例子:
*遊戲畫面
*控制
然後像趴在遊戲屏幕上方的控制所以即使相機移動也不會移動。可能嗎?也許混合xml?如果是的話那怎麼樣?謝謝!
我從來沒有開發與OpenGL
但如果你正在開發它在一定的佈局。那麼你可以做的是以下幾點:一FrameLayout
內
將您的遊戲佈局。
將Linearlayout
或RelativeLayout
放置在相同的FrameLayout
內。
將您的控件放置在您添加的佈局中。
這樣,您將添加的控件將出現在遊戲的頂部,您可以使佈局半透明以獲得更好的用戶體驗。
當你在每一幀的相同位置繪製相同的東西時,感覺像是不必要的工作,但另一方面,屏幕上的每個像素都可能重繪每一幀。大多數遊戲都不盡全力避免這些額外的工作。我建議,而不是試圖通過避免繪製看不見的像素一樣多,你可以,比如贏性能:
熱收縮纏繞在UI的幾何形狀,所以你用α0儘可能繪製的幾個像素。這可能涉及繪製更多的三角形,但根據我的經驗,權衡是非常值得的。
使深度測試爲您工作。如果您的UI完全不透明,您只需先繪製它,然後在背景中繪製場景的其餘部分,以便像素在被UI遮擋時不會繪製。如果您的用戶界面只是部分不透明,您可以嘗試將其細分爲不透明的三角形和半透明三角形,並在最後的單獨調用中繪製半透明的三角形,以便您可以對不透明的三角形進行深度測試。
當您繪製GUI元素精靈時,只需使用另一個永不會移動的相機。您還必須確保您的GUI元素不會意外隱藏在動態場景內容之後。這可以通過在繪製GUI時禁用深度測試或修改glDepthRangef來完成。 – Daniel