2013-10-02 56 views
0

根據我讀過模板測試的書籍是通過比較參考值與模板緩衝區對應像素的參考值來實現的,在其中一本書中它如何陳述:模板緩衝器和模板測試

A mask is bitwise AND-ed with the value in the stencil planes and with the reference value before the comparison is applied

在這裏,我看到的第三參數,其是掩模,這是與模板緩衝區的掩模,或者它是由openGL的自身產生的另一個參數??

有人可以解釋比較過程和values在這個過程中有作用??

回答

1

glStencilMask (...)用於啓用或禁用寫入模板緩衝區中的各個位。爲了使參數數量可管理並適應不同位深的模板緩衝區,需要使用GLuint而不是單獨的GLboolean,如glColorMask (...)glDepthMask (...)

通常情況下,模板緩衝區是8位寬,但不一定是。默認的模板掩模是這樣的,每個位平面都被啓用。在8位模板緩衝區中,這意味着默認掩碼是0xff(11111111b)。另外,OpenGL 2.0+中的前/後面多邊形可以單獨進行模版印刷,因此在技術上有兩個模板掩模。

在你的問題中,你可能指的是glStencilFunc (...),它也有一個掩碼。該掩碼不與模板緩衝區本身相關聯,而是與實際的模板測試相關聯。然而,原則是一樣的。上面的鏈接詳細說明了這個面具是如何與參考文獻AND'd一起的。測試期間的價值。

1

蒙版是一個可選的額外部分,它位於呈現的內容和發送的內容之間。

想象一下,你有一個場景被渲染,你突然決定你不想讓某個物體使用任何紅色。您可以使用蒙版將位運算應用於對象影響的每個像素以刪除紅色值。

  • r:150 b:50 g:47成爲r:0 b:50 g:47
  • r:13 b:255 g:255成爲r:0 b:255 g:255

http://www.opengl.org/sdk/docs/man3/xhtml/glColorMask.xml應有助於解釋多一點。