2
下面是來自同一視點(虛擬相機)的同一3D場景的2張圖像,有無背視。圖像不描繪最終的網格,而是描繪深度緩衝區的內容。OpenGL - BackCulling - 深度緩衝值
沒有BackCulling
glDisable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LESS);
隨着BackCulling
glEnable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LESS);
問題
- 爲什麼這兩個圖像之間有這樣的區別?當然,有人會期待有所不同,但我不明白爲什麼沒有BackCulling的深度圖是如此的流暢,而與BackCulling的深度值似乎並沒有如此連續。
- 在沒有BackCulling的情況下,對於某個像素,深度緩衝區的值是多少?它離攝像機較近嗎(光滑的圖像看起來像這樣),還是因爲很多東西投影到相同的2d點/像素,我應該期待別的東西嗎?
參考 - 三維場景 - 二維框架
確實@NicolBolas通過檢查網格,後表面的頂點具有相似的深度(與前表面頂點相反),但我沒有想到你的建議。非常感謝,它的作品!剛剛在上面提到的代碼行上面添加了你的建議命令:) –
還要注意你也可以使用glCullFace。這會改變您是否挑選正面或背面(或兩者)。 – Invalid