2010-05-22 67 views
2

我想知道爲什麼我在android手機上的opengl中使用的霧不透明,當我將顏色alpha設置爲0時。我將背景設置爲透明,並且工作正常,顏色類或toFloatBuffer()方法對我的網格工作正常,但是當我將霧顏色設置爲透明時,則忽略此事實。這裏是基本的代碼我在渲染的onSurfaceCreated()方法使用霧:在android中的opengl es透明霧

gl.glFogf(GL10.GL_FOG_MODE, GL10.GL_LINEAR); 
gl.glFogf(GL10.GL_FOG_START, 4.0f); 
gl.glFogf(GL10.GL_FOG_END, 10.0f); 
gl.glFogfv(GL10.GL_FOG_COLOR, new Color(0,0,0,0).toFloatBuffer()); 
gl.glEnable(GL10.GL_FOG); 

回答

3

這是預期的行爲。 OpenGL和OpenGL ES中的固定功能霧僅改變片段的最終R,G和B組件。 A組件保持不變(即,未使用GL_FOG_COLOR的A組件)。

+0

好的謝謝,有沒有一種方法可以在Alpha通道上額外使用這種霧效果?我可以通過計算物體到攝像機的距離自行完成,但我希望能夠使用這種霧效果。 – 2010-05-24 10:35:03

+0

並非如此 - 這只是OpenGL ES 1.1中定義的行爲。你是否試圖在任意背景下消除任意內容,還是你需要處理更多有限的情況? – Pivot 2010-05-24 16:19:14

+0

第一個,即時嘗試淡出內容和霧將正是我所需要的:/ – 2010-05-24 21:29:38