3D遊戲從入門到精通-31 32 33

當我們看到現實世界裏,有很多山地。那麼這種山地,在3D世界裏又是怎麼樣顯示出來的呢?要模擬現實中的山地,就需要研究它怎麼樣構成,然後採用各種方法創建出來。在遊戲的世界裏,對於地形的要求是不嚴謹的,只要看起來像山地,就行了,而不像其它地理系統,一定要精確到跟現實世界裏山比例一樣。因此,在這裏創建的3D地形,都是近似地模擬出來,這樣就節省了很多工作,加快地形的顯示,提高遊戲速度的流暢性。

這裏介紹的山地地形,主要使用高度圖來實現。它的原理是:先生成平面的網格,比如是4×4大小,那麼它就有16個頂點。接着,就設置每個網格頂點的高度,也就是設置每個頂點的Y軸座標值,隨着Y軸的座標值不同,就代表了高度不一樣。如果Y軸的值是有規律地變化,那麼顯示出來的網格,就是山地的形狀了,然後再加上各種不同的紋理,就可以顯示高山、沙灘、雪山和盤地等等。

 山地網格1,如下圖:

山地圖形1,如下:

創建山地圖形2,如下圖:

3D遊戲從入門到精通-32 

前面已經編譯好OGRE庫,現在編譯Helloworld工程就很快了。當然,在這個程序裏也是設置爲Debug的方式編譯的,這樣才能使用前面的OGRE的調試方式的庫文件。點一下編譯運行按鈕,很快就看到一個漂亮的OGRE LOGO呈現在你的眼前,如下圖所示:

從這張美麗的畫面裏,看到一個古銅色的OGRE頭像,在光源的照射下,閃亮着光澤,活靈活現的。左下角是一些重要信息,第一行是FPS的數,什麼叫做FPS呢?或許你也會問這個問題,如果你還不懂,現在就給你講一下。FPSFrame per second的縮寫,就是每秒鐘多少幀畫面的意思。在視頻或者動畫裏,衡量動畫的流暢性,就是通過FPS來體現的。FPS值越大,表示動畫流暢性越好。反之,越小的FPS值,說明動畫不好,也就是說畫面更新不及時,看到很卡住的樣子。FPS值的大小,是跟電腦的性能,顯示畫面複雜程度有關。越好的CPUFPS值就越大。更多的內存,FPS值就越大。更好的顯示卡,FPS值也變大。最好的渲染引擎也會導致FPS值變大的,也就是說,當渲染引擎變得非常有效率時,就可以要求的電腦配置越低。FPS值反而變成衡量OGRE引擎的性能了,如果OGRE非常高效,FPS值就越大。第二行是平均FPS值,第三行是最壞時FPS值,第四行是最好時的FPS值,第五行是三角形個數,這裏是4546個三角形。

右下角是一個OGRELOGO圖片顯示。

 

到這裏,就把這個Helloworld編譯並運行了。那麼它又是怎麼樣編寫的呢?怎麼樣調用OGRE庫的呢?

3D遊戲從入門到精通-33 

大體運行流程如下:
1) WinMain函數:Windows程序入口。
2) app.go()函數:應用程序框架運行函數。
3) ExampleApplication::setup()函數:在這裏初始化和創建場境的工作。
4) Root::startRendering():開始渲染並進入消息循環。
5) ExampleApplication::destroyScene():退出時刪除所有分配的資源。
 
由這裏可以看出,程序運行後,進行一系列創建和加載動作,然後調用渲染並進入消息循環,響應鍵盤和鼠標的消息,直到用戶按退按鈕。它們的關係如下圖所示:
 
發佈了2 篇原創文章 · 獲贊 13 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章