OpenGL ES 3 紋理環繞

2021-10-04 18:31:56 字數 1908 閱讀 1478

紋理座標的範圍通常是從(0, 0)到(1, 1),那如果我們把紋理座標設定在範圍之外會發生什麼?

無論是 s 軸還是 t 軸的紋理座標都是在 0.0~1.0 的範圍內,這滿足了大多數情況。但在特定的情況下,也可以設定大於 1 的紋理座標。當紋理座標大於 1 以後,設定的? 方式就會起作用了。

1、重複紋理環繞

當頂點紋理座標大於 1 時,則實際起作用的紋理座標為紋理座標的小數部分。也就是若紋理座標為 3.3,則起作用的紋理座標為 0.3。

4 個頂點的紋理座標改為了(0,0)、(4,0)、(0,2)、(4,2)。 因此,矩形中各片元的紋理座標範圍為 s 軸方向 0~4,t 軸方向 0~2,應該在 s 軸方向重複 4 次,t 軸方向重複 2 次。

gles30.gl_texture_wrap_s, gles30.gl_repeat); //設定 s 軸的??方式為重複環繞

gles30.gltexparameterf(gles30.gl_texture_2d,

gles30.gl_texture_wrap_t, gles30.gl_repeat); //設定 t 軸的??方式為重複環繞

2、映象重複環繞當頂點紋理座標大於 1 時,則實際起作用的紋理座標為紋理座標 的小數部分。也就是若紋理座標為 3.3,則起作用的紋理座標為 0.3。

4 個頂 點(兩個三角形)組成,頂點紋理座標分別為(0,0)、(4,0)、(0,4)、(4,4)。因此,可以看出矩形 中各片元的紋理座標範圍為 s 軸方向 0~4,t 軸方向 0~4,由於映象重複是左右對稱和上下對稱, 所以,s、t 軸均重複對稱兩次。

gles30.gltexparameterf(gles30.gl_texture_2d, //設定 s 軸的??方式為?映象重複 

gles30.gl_texture_wrap_s, gles30. gl_mirrored_repeat);

gles30.gltexparameterf(gles30.gl_texture_2d, //設定 t 軸的??方式為?映象重複

gles30.gl_texture_wrap_t, gles30. gl_mirrored_repeat);

3、擷取環繞擷取環繞方式中當紋理座標的值大於 1 時都看作 1,因此,會產生邊緣被拉伸的效果。

4 個頂點紋理座標分別為(0,0)、(4,0)、(0,4)、(4,4),因此,矩形中的各片元紋理座標範圍為 s 軸方向 0~4,t 軸方 向 0~4。由於在此種環繞方式下,大於 1 的紋理座標都看作 1,因此,產生了紋理的邊緣被拉伸擷取的效果。

gles30.gl_texture_wrap_s, gles30.gl_clamp_to_edge); //設定 s 軸的??方式為?擷取環繞

gles30.gltexparameterf(gles30.gl_texture_2d,

gles30.gl_texture_wrap_t, gles30.gl_clamp_to_edge); //設定 t 軸的??方式為?擷取環繞

OpenGL ES 3 紋理基礎

1 讀取檔案 將儲存的檔案讀取到記憶體 方法很多 inputstream is this.getresources openrawresource path bitmap bitmaptmp try finally catch ioexception e 2 載入紋理 將記憶體影象資料上傳到視訊記憶...

OpenGL ES 3 投影方式 詳述

1 攝像機的設定 從日常生活的經驗中可以很容易地了解到,隨著攝像機位置 姿態的不同,就算是對同一 個場景進行拍攝,得到的畫面也是迥然不同的。因此攝像機的位置 姿態在opengl es 應用程式的開發中就顯得非常重要,首先需要介紹一下攝像機的設定方法。攝像機的設定需要給出 3 方面的資訊,包括攝像機的...

OpenGL ES 3 功能函式 持續更新

1 角度轉換與三角函式 gentype radians gentype degrees 此函式功能為將角度轉換為弧度,即返回值 result 180 degrees,degrees 引數表示需要轉換的角度。gentype degrees gentype radians 此函式功能為將弧度轉換為角度,...