簡體   English   中英

Opengl深度緩沖和剔除

[英]Opengl Depth buffer and Culling

什么是在OpenGL中使用背面剔除和深度緩沖之間的區別?

背面剔除是指OpenGL確定哪些面背向觀察者,因此是看不見的。 想想一個立方體。 無論你如何旋轉立方體,3個面都將永遠不可見。 弄清楚這些面臨哪些面,將其從要繪制的多邊形列表中刪除,然后將繪圖列表減半。

深度緩沖非常簡單。 對於繪制的每個多邊形的每個像素,將其z值與z緩沖區進行比較。 如果它小於z緩沖區中的值,則將z緩沖區值設置為新的z緩沖區值。 如果沒有,丟棄像素。 深度緩沖提供了非常好的結果,但可能相當慢,因為每個像素都需要值查找。

實際上,這兩種方法之間沒有任何相似之處,它們通常都被使用。 給定一個立方體,您可以先使用剔除切出一半多邊形,然后使用z緩沖繪制它們。

剔除可以減少渲染的多邊形,但它不是排序算法。 這就是Z緩沖。

給定的三角形有兩個面,即正面和背面。 您正在查看的一側取決於點在頂點列表中出現的順序(也稱為繞組)。 通常,三角形列表具有交替纏繞,因此您可以重復使用前兩個點,但條帶中給定三角形的面對不會交替。 背面剔除是優化步驟,其中從要繪制的三角形列表中移除場景中遠離視圖的三角形。

深度緩沖區(z緩沖區)用於掛起已經渲染的最接近的東西(深度相對於視圖)。 如果繪圖列表中下一個出現的東西是我已經繪制過的東西(也就是說,它的深度遠遠超出它),我可以跳過繪制它,因為它被阻擋了。 如果要繪制的新東西更接近,我繪制它並使用新的更接近的值更新深度緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM