[英]Clipping object in openGL ES
我想裁剪並反對我的openGL ES
應用程序,應該以以下方式完成:
左邊是初始圖像,中間是模板緩沖區矩陣,右邊是結果。
從我在這里閱讀的內容: 丟棄模具可能會導致性能問題,並且由於將要裁剪的模型將被旋轉和平移,因此,老實說,我不知道繪制后的模型是否會在錯誤的位置被裁剪掉這些動作。 會嗎?
所以,我想到了深度緩沖。 再舉一個例子:
假設黑色正方形是可移動的,並且可能不僅僅是一個簡單的正方形,而是一個復雜的UIBezierPath
。
我想知道如何使用深度緩沖區,以便將在正方形(或UIBezierPath
)之外繪制的所有內容都剪切掉,這意味着將剩余像素的所有z值調整為某個閾值,該值不會顯示在屏幕。
因此,總結一下:
1)使用模具是否會如前所述昂貴?
2)是否可以在旋轉和平移的對象上使用模具,以便始終將其繪制?
3)使用深度緩沖區,是否可能找出正方形(或UIBezierPath
)內部和外部(以及UIBezierPath
)如何? 掩蓋它嗎?
4)什么是更好的方法?
我知道有很多要回答的問題,但是由於它們彼此相關,所以我認為最好在同一問題上提出。
模板緩沖區是前往此處的方法。 您引用的discard
答案是關於在片段着色器中使用discard
功能,這對於基於圖塊的延遲渲染GPU(即基本上每個移動GPU)而言都是非常昂貴的。
但是,使用模版緩沖區非常便宜,因為它存在於每個圖塊的芯片上,並且不會干擾延遲渲染。
總結一下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.