OpenGL關於glStencilFuncSeparate()和glStencilFunc()函數的區別講解

今天小編就爲大家分享一篇OpenGL關於glStencilFuncSeparate()和glStencilFunc()函數的區別講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

glStencilFunc()函數是OpenGL提供的對模板緩衝區進行控制的命令,這是OpenGL2.0之前使用的函數,其函數原型爲

void glStencilFunc(GLenum func, GLint ref, GLuint mask).

func指定比較函數,它指定了測試通過的條件,其取值可以是:(爲方便表示,參考值爲refValue, 緩衝區值bufferValue)

  • GL_NEVER                        總是不通過測試
  • GL_ALWAYS                      總是通過測試
  • GL_LESS                            refValue < (bufferValue & mask)
  • GL_LEQUAL                       refValue < (bufferValue & mask)
  • GL_GREATER                    refValue > (bufferValue & mask)
  • GL_EQUAL                         refValue = (bufferValue & mask)
  • GL_NOTEQUAL                 refValue /= (bufferValue & mask)

在這裏“通過”的意思指的是,我們在將圖元繪製到幀緩衝區的時候在片段進行測試的時候是可以完全透過去的,否則的話這個片段就無法繪製到對應的顏色幀緩衝區,那麼我們所繪製的內容也就顯示不出來。通過這種控制方法來控制顯示,其實這種操作在我們實際的生活中也是很常見的,例如給汽車噴漆,蓋章(只會顯示刻了的內容)。

ref指定參考值的大小。

mask指定掩碼,只在掩碼爲1的位上進行比較,控制參考值的哪些位和緩衝區進行比較。

glStencilFuncSeparate()函數OpenGL2.0以後新增的函數,其函數原型爲

void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask).

和 glStencilFunc()函數的不同是可以指定幾何圖形進行進行模板測試,位於多邊形的哪個面。其枚舉值可以是

GL_FRONT, GL_BACK, GL_FRONT_AND_BACK.

其它的參數兩個函數表示的含義相同。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章