OpenGL繪製地形

2021-07-11 09:58:35 字數 1090 閱讀 2971

1.建立頂點緩衝區物件(vertexbuffer)

2.建立索引緩衝區物件(indexbuffer)

3.載入高度圖(heightmap)

3.1把位影象素轉換為高度圖資料(頂點資料):高度圖在每個方向上都是1個單位寬,且其以x-z平面上的位置(0,0)為中心,點陣圖的最上角將被對映到(-0.5,-0.5),右下角會被對映到(0.5,0.5),y值則為該畫素的紅色分量/255,即高度。

3.2使用getpixels()獲得畫素陣列,畫素偏移值 = 當前行*高度 + 當前列

3.3生成索引資料

4著色器

4.1頂點著色器(res/raw/heightmap_vertex_shader.glsl)

4.2片段著色器(res/raw/heightmap_fragment_shader.glsl)

5.關聯著色器及其載入頂點資料

6.渲染器繪製高度圖(skyboxrenderer)

7.深度緩衝區不繪製被遮擋物體

//啟動深度測試

glenable(gl_depth_test);

//新片段比任何已經存在那裡的片段相比比較近或者二者在同等距離處

gldepthfunc(gl_lequal);

...//新片段比任何已經存在那裡的片段近或者比遠平面近,則繪製新片段

gldepthfunc(gl_less);

//禁止寫入深度緩衝區,即粒子將針對地面進行深度測試

gldepthmask(false);

...//允許寫入深度緩衝區

gldepthmask(true);

8.剔除技術消除隱藏面(物體的後面)

//剔除:消除隱藏面(物體後面),遵循三角形的捲曲順序

glenable(gl_cull_face);

9.原始碼:

這裡寫鏈結內容

地形繪製基礎

地形繪製基礎 高度圖其實就是乙個陣列,該陣列的每個元素都指定了地形方格中某乙個特定頂點的高度值。另外一種實現方式可能用該陣列中的每個元素來指定每個三角形柵格的高度 我們將高度圖視為乙個矩陣,這樣高度圖中的元素就與地形柵格中的頂點一一對應。高度圖被儲存在磁碟中,我們通常為其每個元素只分配乙個位元組的儲...

學習OpenGL ES之繪製地形

地形模型一般是由nxn的網格構成,網格的點在y軸上的座標由灰度地形圖上相應的顏色決定。顏色越亮,高度越高。顏色每個通道的取值範圍可以是0 255,通過公式轉換,可以很容易的控制生成模型的高度。上篇文章中,我們使用三角帶生成圓柱體的中間部分。現在我們要用多個三角帶來生成地形。如何生成單個三角帶我就不贅...

opengl繪製漢字

opengl本身並沒有繪製文字的功能,他只是乙個三維繪圖的api集和,很多東西都要 自己動手才可以實現。opengl繪製文字,網路上已經有很多成熟的方式方法,我這裡給 大家介紹的是我使用的方式,從繪製的效率上來說,速度上從已經達到我個人水平的最大值。首先介紹下網路上的一些繪製方式。一 將要繪製的文字...