opengl紋理縮放的原理

2021-10-23 09:49:30 字數 1005 閱讀 5006

用opengl處理3dlut對映的時候,lut濾鏡資料輸入到紋理後,不經過任何處理直接輸出,影象兩邊會有錯誤的畫素點出現,如下(更換了,以便驗證結果的一般性)

在我的測試demo中有以下**設定紋理的屬性

// 當紋理座標超出範圍時,重複當前紋理

gltexparameteri

(gl_texture_2d, gl_texture_wrap_s, gl_repeat)

;gltexparameteri

(gl_texture_2d, gl_texture_wrap_t, gl_repeat)

;// 紋理放大和縮小均使用線性化插值

gltexparameteri

(gl_texture_2d, gl_texture_min_filter, gl_linear)

;gltexparameteri

(gl_texture_2d, gl_texture_mag_filter, gl_linear)

;

然後我生成了乙個只有四個畫素的,將其輸入到opengl,放大到400*400,然後輸出,原圖和輸出結果如下

原因已經漸漸清晰了,再看下圖

gltexparameteri(gl_texture_2d, gl_texture_wrap_s, gl_repeat);這行**決定了插值部分是直接重複原圖部分。gltexparameteri(gl_texture_2d, gl_texture_mag_filter, gl_linear);決定了影象放大後的插值是線性插值,當然,gl_linear也可以換成其他值,比如gl_nearest,表示直接取臨近點畫素,不插值

關於縮小的原理,可以在這個**去看,原理類似

opengl紋理單元

可以這樣簡單的理解為 顯示卡中有n個紋理單元 具體數目依賴你的顯示卡能力 每個紋理單元 gl texture0 gl texture1等 都有gl texture 1d gl texture 2d等,如下 cpp view plain copy print struct textureunit te...

openGL 紋理使用

最近找了點資料學習了下opengl 紋理的使用 先有個 整體把握,然後再去看大部頭中的細節講解,感覺這樣的學習方式好些 總結下紋理使用總體流程 1 啟用紋理 glenable gl texture 2d 2 載入紋理 3 紋理 的顯示 載入紋理 1 讀取紋理影象高寬和畫素資料到記憶體中,老版本 op...

OPENGL紋理基礎

對於vbo道理是一樣的 1.紋理座標 在繪製一條線段時,我們設定其中乙個端點為紅色,另乙個端點為綠色,則opengl會自動計算線段中其它各畫素的顏色,如果是使用glshademode gl smooth 則最終會形成一種漸變的效果 例如線段中點,就是紅色和綠色的中間色 類似的,在繪製一條線段時,我們...