頂點紋理拾取技術

2021-06-22 00:35:35 字數 1505 閱讀 4239

第一次看到這個技術是在**《一種基於gpu的瓦片塊四叉樹地形繪製演算法》(作者 王冬等)。這個應該不是新技術了,自己嘗試用了下,感覺還可以,分享之。

我做東西都與我專業有關,自己邊學邊做,沒什麼技術含量,主要是交流學習。

學紋理時,我們知道取樣器都是在片段著色器中使用,然而在頂點著色器中也可以實用的,用頂點紋理拾取技術,最好用 矩形紋理取樣器,因為他的紋理座標沒有規範化,可以直接使用。

第一步,就是自己做乙個二維矩形紋理,資料來源我用的是glm::vec3的一位陣列用來儲存座標值,建立完成後,就設定過濾方式 用gl_nearest。

**如下

glgentextures(1, &textureid);

glbindtexture(gl_texture_rectangle, textureid);

gltexparameteri(gl_texture_rectangle, gl_texture_mag_filter, gl_nearest);

gltexparameteri(gl_texture_rectangle, gl_texture_min_filter, gl_nearest);

gltexparameteri(gl_texture_rectangle, gl_texture_wrap_s, gl_clamp_to_edge);

gltexparameteri(gl_texture_rectangle, gl_texture_wrap_t, gl_clamp_to_edge);

glactivetexture(gl_texture0);

glbindtexture(gl_texture_rectangle, textureid);

glpixelstorei(gl_unpack_alignment, 1);

glteximage2d(gl_texture_rectangle, 0, gl_rgb32f, chunksize, chunksize, 0, gl_rgb, gl_float, (glvoid*)chunkvertex);

chunkvertex就是上面所說的我定義的glm::vec3的一維陣列。

其實不僅座標可以,法向量也可以用這個傳的。

頂點著色器**

layout(location = 0) in vec2 position;

layout(location = 1) in vec3 normal;

...uniform sampler2drect getheight;

.

.
.

void main()

{ vec3 coods = texture(getheight,position.xy).rgb;//頂點座標

opengl es 射線拾取

後來只好自己一點一點蒐集資料,但是無奈不知道為什麼網上這個內容有價值的特別特別少,但是好在這個過程中熟悉了android除錯過程,又找到了其他一些有用的東西,就寫了第乙個帖子 android平台下opengl學習例程 在第乙個帖子發完之後,很多開發者留了言,給了意見,我發現有些問題是大家都碰到的,討...

osgearth向量拾取

向量拾取是最近才做的功能,以前一直認為這個功能可能會很麻煩,原因呢 osgearth裡 估計所有的gis球中 是將向量光柵化成紋理貼到球上的,怎麼拾取一張上的一條線呢 osgearth的自帶例子裡沒有找到向量拾取的例子 最終這個功能畢竟是做出來了,這裡把自己的探索過程梳理一下.首先去google上搜...

vr發射拾取

啊void fixedupdate if device.gettouchdown steamvr controller.buttonmask.trigger if device.gettouchup steamvr controller.buttonmask.trigger if device.ge...