2013-05-16 76 views
2

我正在開發針對Android和iOS的跨平臺遊戲。對於幾個類似廣告牌的對象,我使用添加劑混合(glBlend(GL_ONE, GL_ONE))和黑色背景紋理。渲染的對象幾乎無處不在,看起來很好(即紋理中的黑色像素完全透明)。但是,在兩款採用Adreno GPU(一款Nexus 4和另一款索尼Xperia Go)的Android設備上,我有這樣的人工製品:enter image description here在某些Android設備上添加混合人造產品與OpenGL ES 2.0

由於漢堡包圖標可見,背景顏色會滲入渲染的四邊形。我假設它是背景顏色出血,因爲當廣告牌四邊形直接位於背景前時效果不可見。爲了讓事情變得更加詭異,當我從設備截取屏幕時,效果不可見,所以我必須用另一臺相機拍攝屏幕圖像。我還注意到,當我從Android開發人員設置啓用Disable HW Overlays時,人工製品消失。當我按下音量按鈕時,屏幕上還有另一個透明窗口,例如音量滑塊,人工製品也會消失。

當我渲染我的場景時,首先在第一遍渲染不透明物體,然後在第二遍渲染我的透明廣告牌glBlend(GL_ONE, GL_ONE)並禁用深度寫入。

+0

除了在這裏發佈,還可以在Qualcomm開發者網絡論壇上嘗試。你有沒有嘗試過不同的紋理內部格式? – Trax

+0

感謝您的建議,我也會嘗試。 – rgngl

回答

0

爲了記錄,我花了很長時間找到罪魁禍首,但最終我找到了原因。事實證明,並非我所有的「所謂的」不透明物體都是非常不透明的(即它們的alpha值爲< 1.0)。由於這個原因,在使用硬件覆蓋層的設備上,在具有單個硬件覆蓋層的設備上,人工品會變得可見,這看起來很不錯。我不是100%確定的,但是當我在我的應用程序窗口頂部有一個覆蓋窗口(例如系統音量欄)時認可這一點,這與疊加層有關。

當我確定所有不透明的物體都是不透明的問題消失後。

相關問題