由於計算機以離散點生成圖形,生成圖形必然與真實景物存在差距,這種差距表現為:直線或光滑曲面的鋸齒、花紋失去原有色彩形狀、細小物體在畫面的消失等。統統叫做走樣(aliasing)。反走樣可以減少這種情況。粗略設想一下,就是把原來邊界的地方鋸齒部分用低飽和度的點補上,這樣既不影響整體輪廓,又獲得較好的平滑效果。
用於減少和消除各種走樣現象的方法就是反走樣。通常反走樣的方法有提高解析度法、非加權區域取樣法、加權區域取樣法等,但是在opengl中實現反走樣就簡單的多。
反走樣前提供「提示」採用函式:
void glhint(glenum target,glenum hint);
其中hint可以是:
gl_fastest 給出最有效的選擇
gl_nicest 給出最高質量的選擇
gl_dont_care 沒有選擇
target 意義
gl_point_smooth_hint 指定點、
gl_line_smooth_hint 線、
gl_polygon_smooth_hint 多邊形的取樣質量
gl_fog_hint 指出霧化計算是按每個象素進行(gl_nicest),還是按每個頂點進行(gl_fastest)
gl_perspective_correction_hint 指定顏色紋理插值的質量
其中gl_perspective_correction_hint用以糾正單純線性插值帶來的觀察錯誤。
opengl實現反走樣需要滿足兩個條件,一是啟用混合,二是啟用針對幾何圖元的反走樣處理。
前面已經講過,glenable(gl_blend)啟動混合,而glenable(mode)則啟用幾何圖元的反走樣,其中mode取值為gl_point_smooth、gl_line_smooth或gl_polygon_smooth。
OpenGL反走樣 待續
同時我們也注意到,我們所主要引用的參考文獻easy wireframe display with barycentric coordinates中提到了利用opengl內建函式fwidth實現反走樣的方法 在後面的工作中,找到了另外幾種實現反走樣的方法,蒐集對比一下,詳見該篇文章 drawing a...
反走樣技術
直線掃瞄轉換演算法在處理非水平 非垂直且非45 的直線段時會出現鋸齒,這是因為直線段在光柵掃瞄顯示器上顯示的影象是由一系列亮度相同而面積不為零的離散畫素點構成的。這種由離散量表示連續量而引起的失真稱為走樣 aliasing 用於減輕走樣現象的技術稱為反走樣 anti aliasing,aa 或者抗鋸...
還是自適應反走樣
在fmf的反走樣策略上,作出了如下幾個決定 1 提供兩種反走樣選擇 無反走樣 自適應反走樣。將閾值為0的自適應反走樣當作傳統反走樣的替代品。2 反走樣模式只用於輸出,可以是視覺化的輸出,也可以是render to disk。提供視覺化反走樣輸出,主要是考慮一些小圖的製作,比如5000 x 5000。...