PagedGeometry程式設計講解 三

2021-09-08 23:37:48 字數 1467 閱讀 6877

通過以上的學習,你應該可以熟練的使用pagedgeometry的基本功能來增加樹木和草叢到你的遊戲場景裡面。現在我們需要增加一些草。這個教程解釋了使用pagedgeometry的草載入元件增加動態的草到你的場景中,以及怎樣把陰影應用到你的草和樹上從而在很大程度上改善了圖形學的視覺效果。

(一)草元件載入grassloader

grassloader 是乙個關鍵的渲染幾何核心引擎元件像treeloader2d和treeloader3d。使用treeloader 類中的乙個元件增加草是非常單調和無效的,由於草的葉子需要單個的增加。由於這個原因,grassloader的存在就可以很容易的對草進行渲染了。

1、你不可能使用impostorpage展示草。由於草是許多billboards,在構造上,它已經是盡可能的優化了。試圖對草使用impostors將導致許多impostor渲染,導致大量的記憶體浪費,當載入新的頁時就會出現許多lag。你應該使用batchpage或者「grasspage」展示草,後者將是最優化的。

2、fade 轉變一直用在草上面, and do not cost any performance. when configuring the

pagedgeometry object used to render your grass, do not enable transitions yourself. doing this will only

reduce performance unnecessarily。

(二)創造草

增加草到你的世界中,你首先要建立一耳光pagedgeometry物件,正如:

pagedgeometry* grass = new pagedgeometry(camera,50);

我們通過使用grasspage取代batchpage和impostorpage組合:

grass->adddetaillevel(100);

grasspage 是最有效的展示草的lod,換句話說它不是最有效的展示樹木。

下面,建立乙個新的grassloader例項通過pagedgeometry物件使用:

grassloader *grassloader = new grassloader(grass);

grass->setpageloader(grassloader);

grassloader->setheightfunction(&getterrainheight);

另外為了建立和分配乙個grassloader例項給pagedgeometry物件,你能夠看到這個函式稱為「setheightfunction()」像treeloader2d,在執行期間grassloader計算草的y的位置的時候都要用到這個函式。通常建立乙個函式返回你的地形中的高度值,這樣可以使草和樹木直接出現在地形的表面上。

pagedgeometry是完全可以展示草!所有你需要做的就是增加下面的**:

grasslayer *layer = grassloader->addlayer("grassmaterial");

程式設計,還是程式設計

喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...

少兒程式設計程式設計

機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...

LINUX程式設計 socket程式設計

什麼是套接字 套接字是一種通訊過程,它使客戶 伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行。套接字建立過程 1,建立乙個套接字,這是分配給該伺服器程序的乙個作業系統資源,套接字由伺服器通過系統呼叫socket建立出來的,所以其它程序將不能對它進行訪問。2,給套接字起個名字,用系統呼叫...