我想了解屏幕和邏輯之間的關係OpenGL用來決定是否應該呈現一個原語,即它是否在屏幕上。glViewport,窗口大小和剪輯
例如,假設您將視口設置爲大於屏幕(沒有理由這麼做,但舉例來說)。 OpenGL不會「知道」屏幕尺寸,所以只要正投影將它們放置在視口內,它就會「畫出」屏幕上的點,是否正確?
但是,如果我將頂點位置定義在投影所確定的視口之外,OpenGL是否將其包含在渲染中?
glViewport(0,0,100,100);
ApplyOrtho(50,50); // custom ES 2.0 utility to apply 2D orthographic projection
現在位置頂點(75,75)
不會被OpenGL渲染,對不對?
有關這方面的更多技術說明,要查找的術語是「像素所有權測試」,這甚至超出簡單的「在窗口範圍內」測試。例如,一個封閉渲染窗口的窗口也可能會使其下方的片段失效,從而失敗窗口所有權測試,然後OpenGL將丟棄這些片段。這是您在渲染到要存儲的紋理或圖像時應始終使用正確的屏幕外緩衝區的原因之一。 – datenwolf
@datenwolf:像素所有權測試(我在寫這個答案時查找了它)並不適用於窗口以外的部分視口。它僅適用於操作系統特定的不可見部分窗口條件(窗口部分不在屏幕上,或者另一窗口部分遮擋窗口等)。請注意,在呈現給FBO時,所有片段*都會傳遞像素所有權測試。 –
據我瞭解,負責放棄延伸到窗口限制之外的視口片段的代碼路徑與像素所有權測試代碼共享很多。 – datenwolf