在OpenGL中使用背面剔除和深度緩衝區有什麼區別?Opengl深度緩衝區和剔除
3
A
回答
10
背景剔除是OpenGL確定哪些面朝向遠離觀看者並因此未被看見。想想立方體。無論你如何旋轉立方體,3個臉部將永遠隱形。找出它們面對的是哪些,將它們從要繪製的多邊形列表中刪除,並且您只將圖形列表的一半減半。
深度緩衝相當簡單。對於繪製的每個多邊形的每個像素,將它的z值與z緩衝區進行比較。如果它小於z緩衝區中的值,則將z緩衝區值設置爲新的z緩衝區值。如果不是,則丟棄該像素。深度緩衝提供了非常好的結果,但可能相當緩慢,因爲每個像素都需要查找值。
實際上,這兩種方法之間沒有任何相似之處,它們通常都被使用。給定一個立方體,你可以首先使用剔除剪出一半的多邊形,然後使用z緩衝來繪製它們。
剔除可以減少渲染的多邊形,但它不是一種排序算法。這就是Z緩衝。
6
給定的三角形有兩面,正面和背面。你正在看的一面是由點出現在頂點列表(也稱爲繞組)中的順序決定的。典型的三角形列表具有交替纏繞,因此您可以重複使用前兩個點,但條帶中給定三角形的朝向不交替。背面剔除是優化步驟,將場景中離開視圖的三角形從要繪製的三角形列表中移除。
深度緩衝區(z緩衝區)用於掛起已經渲染的最近的東西(深度相對於視圖)。如果抽籤表中下一個出現的東西落在我已經繪製的東西的後面(即,它的深度使得它更遠),我可以跳過繪製它,因爲它被阻擋。如果繪製的新東西更接近,我繪製它,然後用新的更接近的值更新深度緩衝區。
相關問題
- 1. OpenGL ES深度緩衝區
- 2. OpenGL深度緩衝區
- 3. 在OpenGL中查看深度緩衝區
- 4. OpenGL顏色深度緩衝區
- 5. OpenGL深度緩衝區問題
- 6. OpenGL深度緩衝區溢出
- 7. Android上的OpenGL深度緩衝區
- 8. 如何寫入OpenGL深度緩衝區
- 9. OpenGL中的深度緩衝區
- 10. OpenGL深度緩衝區不適用
- 11. OpenGL深度緩衝區最大距離
- 12. OpenGL:渲染緩衝區,深度緩衝區
- 13. OpenGL - BackCulling - 深度緩衝值
- 14. 將深度渲染緩衝區複製到深度緩衝區
- 15. 如何快速讀取OpenGL顏色緩衝區和深度緩衝區?
- 16. opengl深度測試如何使用24位深度緩衝區?
- 17. 傳遞深度緩衝區
- 18. 對數深度緩衝區
- 19. OpenGL混合模式和深度緩衝區
- 20. OpenGL:僅獲取模板緩衝區並且沒有深度緩衝區?
- 21. Qt&OpenGL - QGLWidget&QPainter:深度緩衝
- 22. OpenGL - 幀緩衝區深度紋理與顏色深度紋理有所不同
- 23. 在OpenGL ES 2.0中寫入深度緩衝區/深度值的解決方法
- 24. 當點有相同的深度時,opengl深度緩衝區變慢
- 25. OpenGL:指定寫入深度緩衝區的值是什麼?
- 26. OpenGL深度緩衝區紋理(針對各種圖像大小)
- 27. OpenGL:讀取幀緩衝區的深度紋理
- 28. 在opengl es 2.0中使用深度緩衝區iphone
- 29. 在Matlab中使用OpenGL獲取深度緩衝區
- 30. OpenGL計算着色器中的深度緩衝區示例
不是OpenGL背面剔除只是剔除面的背面,即面向內部的立方體面? (我非常確定Mikeb的答案是正確的)。 – mk12