openGL中的抗鋸齒實現

2021-07-14 03:01:24 字數 1251 閱讀 4552

圖形繪製到螢幕時,光柵化影象通過離散的畫素點來表示,因此所繪製的圖元(比如直線)會產生鋸齒,這種鋸齒也稱作走樣。消除鋸齒的技術稱為反走樣,也叫做抗鋸齒,通過這種處理可在一定程度上消除鋸齒的影響,增強顯示效果。在opengl中,可通過函式glhint()來對影象質量和繪製速度之間的權衡作一些控制,其函式形式為:

void glhint(glenum target,glenum hint);

引數target說明控制什麼行為:gl_point_smooth_hint、gl_line_smooth_hint和gl_polygon_smooth_hint分別指定點、線和多邊形的取樣質量;gl_fog_hint指出霧是按畫素進行(gl_nicest)還是按頂點進行(gl_fastest);gl_perspective_correction_hint指定了顏色紋理插值的質量並可糾正由單純線性插值所帶來的一些視覺錯誤。引數hint可以是:gl_fastest(給出最有效的選擇)、gl_nicest(給出最高質量的選擇)、gl_dont_care(沒有選擇)。

雖然在opengl的顏色索引模式下也可以實現反走樣,但仍建議在rgba模式下進行。對圖元進行反走樣時也要先呼叫glenable()函式啟動反走樣(其引數為gl_point、gl_line_smooth或gl_polygon_smooth)。如果是在rgba模式下進行反走樣,還必須與融合配合使用,通常使用gl_src_alpha和gl_one_minus_src_alpha分別作為源和目的因子。

opengl中使用反走樣,需要在設定函式中進行設定,下面設定反走樣的**:

// initialize opengl's rendering modes  

void initrendering()  

寫乙個opengl程式畫乙個點,如果沒有抗鋸齒,則為方形的。如果我們啟動抗鋸齒設定,則點是乙個圓點。

未啟用

寫乙個opengl 畫乙個線,很明顯,啟用抗鋸齒後,粗線變成了矩形,而未啟動則是乙個平行四邊形

未啟用

opengl中的抗鋸齒

opengl的抗鋸齒 1.對直線和點主要用函式gl enable gl line smooth 或gl enable gl point smooth 2.對rgba模式需要啟動混合功能,最常用的混合模式為gl src alpha和gl one minus src alpha 用gl blend開啟混...

OpenGL學習十一 抗鋸齒

啟用抗鋸齒 還是以glenable來啟用抗鋸齒,可以根據不同圖形進行處理 1.gl point smooth 點 2.gl line smooth 線 3.gl polygon smooth 多邊形 抗鋸齒質量 效果越好,那麼計算機速度就越慢 glhint用於對點,線,多邊形的抗鋸齒程度進行設定 1...

抗鋸齒線條 實現

draw an anti aliased line?uses graphics,windows type trgbtriplearray array 0.1000 of trgbtriple prgbtriplearray trgbtriplearray anti aliased line proc...