2013-09-05 63 views
1

我正試圖在android上渲染與opengl es rubix立方體。以下是我如何做到的:我渲染了27個相鄰的立方體。被覆蓋的立方體的面部帶有黑色bmp圖片的紋理,並且可以看到的其他面部帶有彩色圖片。我使用剔除面部和深度測試來避免渲染無用的面部。但看看我得到了什麼,這是非常奇怪的。有時黑臉會出現。任何人都可以告訴我如何擺脫文物?關於用opengl渲染相鄰立方體的工件?

截圖:

enter image description hereenter image description hereenter image description hereenter image description here

+0

深度緩衝區精度問題是直接猜測 - 深度緩衝區只有非常精確,所以如果多邊形在範圍內接近,那麼它可能會無意中推斷出另一個更接近,但僅限於某些像素。你可以發佈截圖(或鏈接到一個人,可以直接把它移動到你的文章)?如果問題不相關,它會節省很長時間的回答。 – Tommy

+0

感謝您的幫助。我有一些截圖,但似乎我沒有足夠的聲望發佈圖片。 – flexwang

+0

有沒有其他地方可以放置它們? Imageshack或類似的地方?允許更多信譽的用戶將內嵌圖像移動,這樣我就可以直接將它們添加到您的問題 - 這樣即使我不知道答案,其他人也可能更容易解決問題。 – Tommy

回答

2

隨着截圖的好處看起來根本是沒有任何效果的深度緩衝 - 這將是安全的,斷定你呈現的側面先是藍色的立方體,然後是背後的中央部分,然後是背面?

我稍微超出了我的深度與Android的東西,但我認爲混亂可能只是在OpenGL內啓用深度測試是不夠的。您還必須確保分配深度緩衝區。

也許你打電話給setEGLConfigChooser這是禁用深度緩衝區。該方法有一堆重載的變體,但是單個布爾版本以及允許指定redSize,greenSize等的版本可讓您明確控制是否存在深度緩衝區大小。所以你會想檢查這些。

如果您正在明確創建幀緩衝區,請確保您附加了深度渲染緩衝區。

+0

我只是渲染了一個立方體來證明深度測試是否有用。我發現你是正確的深度緩衝沒有影響的東西〜 – flexwang

+0

我找到一個setEGLConfigChooser調用,禁用深度緩衝區。非常感謝你注意到這一點。我認爲我解決了這個問題。 – flexwang