OpenGL 采样器的比较模式
來自?flyfish|已發表?2020-10-27
深度紋理可以通過兩種模式進行采樣, 第一種是按傳統的紋理采樣模式直接采樣來獲取深度值,這將會返回一個單浮點數vec4 類型的值。也可以使用比較模式(comparison mode) 模式來采樣深度紋理。使用比較模式時,我們需要指定一個參考值(reference value) , 該參考值與從深度紋理中采樣的深度值進行比較,為了使參考值與采樣的深度值進行比較,我們還需要設置一個比較函數(comparison function),比較結果只有R值是比較結果。測試成功,返回 1.0f, 測試失敗,返回0.0f.
當使用線性過濾器去采樣時,采用結果是由硬件設備的實現來定義的,一般比較模式的返回值的范圍是[0 , 1.0]之間, 這種采樣方式稱為百分比漸進采樣方式“percentage Closer Filering”.
如果紋理是歸一化的整型值,那么傳入的參考值也將被歸一化到[0,1]的范圍內去匹配紋理值。否則參考值不會被歸一化到[0,1]的區間.
使用比較模式需要專門做兩方面的設置,首先GLSL中紋理的采樣必須是陰影采樣器,也就是這種模式專門針對的是陰影的采樣,其次激活的深度紋理關聯的采樣器要開啟比較模式。
要將紋理設置成比較模式,需要設置紋理比較模式GL_TEXTURE_COMPARE_MODE 設置成 GL_COMPARE_REF_TO_TEXTURE, 把紋理比較函數 GL_TEXTURE_COMPARE_FUNC 設置成 GL_NEVER, GL_ALWAYS, GL_LESS, GL_LEQUAL, GL_EQUAL , GL_NOT_EQUAL, GL_GEQUAL, GLGREATER 之一, 比較方式:
ref OPERATOR texture
如果設置比較函數為 GL_LESS, 當 參考值 ref 小于 采樣的紋素值的情況下,測試通過時, 采樣器將會返回非零的值——百分比漸進的采樣方式[0,1] 或 0、1 值 。
總結
以上是生活随笔為你收集整理的OpenGL 采样器的比较模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于ASP.NET的教师教学质量评价反馈
- 下一篇: windows 上配置 nginx 转发