原创 Ogre的渲染優化心得(一) -- 前言

   做商業網絡遊戲的話,效率是一個不可避免的話題,爲了留更多的空間給客戶端的邏輯,那麼渲染模塊就應該儘量高效. 小弟只淺談一下Ogre的渲染優化,以大家熟悉的天龍八部爲例.   以網上流傳版本的天龍代碼來看,Ogre和CEGUI部分的渲

原创 Ogre1.7地形淺析

早在1年前,就想好好研究一下Ogre1.7的新地形,但是各種原因導致現在我才下載了Ogre1.73的源碼進行研究。而且只能在業餘時間研究, Ogre的以前地形一直被人詬病,根本無法用於遊戲,於是Ogre愛好者只好自己實現一些地形插件來解

原创 把天龍的地形升級爲Splatting地形

只能說,現在主流遊戲地形每層之間的混合方式,都是採用Slatting技術,每層地表之間的alpha混合,都是美術在編輯器刷出來的。而老的遊戲,比如天龍,還沿用魔獸3那種拼接的地形,比圖土地和草地的融合都是做圖做好的,而不是實時刷出來的,導

原创 一個基於Ogre,適合2.5D遊戲比較完美的陰影解決方案

這是我以前升級Ogre引擎,實現的一個方案,願意拿出來分享下經驗。 每個精通Ogre的程序員,都會對Ogre自帶的陰影方案感到失望,不管是模板陰影,還是投影陰影,都是固定渲染管線的陰影,效果都不好。 暢遊《天龍八部》都升級到3了,還採用

原创 網上流傳的天龍源碼框架分析之一 --- 客戶端簡單介紹

網上流傳一份天龍前身武俠世界的源碼,小弟也從朋友那裏搞了一份,研究了一下。   90%的源碼都看過,每個類的作用基本都瞭解。   經常有網友問我天龍源碼框架的問題,問的人太多了,所以我乾脆總結一下算了。   天龍的客戶端代碼。分2個主要部

原创 用Ogre固定渲染管線實現火炬之光X-RAY效果

 遊戲的遮擋半透,一般2種方法,一種是天龍的那種,讓遮擋的建築物半透明,一種是火炬之光的這種,X射線   那種好?其實達到效果都行,   火炬之光不能用第一種,因爲他的模型都是很大很大的,建築一透,全透了,很多地方可能還會穿幫,   我的

原创 Ogre的渲染優化心得(二) -- Renderable和渲染批次, MovableObject和攝像機裁剪, SimpleRenderable和地形

優化之前,先理解優化的原理.   1).Renderable和渲染批次:       渲染批次是神馬?自己去看教程,簡單講,他極大地影響渲染的效率,所以渲染批次儘量少.比如10個批次,渲染10000個三角形,比10000個批次,渲染10個

原创 Ogre實現圓形小地圖,其實和CEGUI無關.

做網絡遊戲的都會遇到圓形小地圖問題,網上也有很多相關討論的文章,但是都多多少少有些問題. 其實,這個問題並不難,只是很多人總是把他和CEGUI結合在一起,往CEGUI混合方向去考慮,自己搞難了自己   我們反過來從需要考慮,   1。我們

原创 Ogre渲染優化心得(五) -- 用硬件蒙皮代替軟件蒙皮,用GPU代替CPU

骨骼動畫的計算,是比較費時的,因爲數據量大. 這部分數據,用CPU計算,就是軟件蒙皮,用GPU去計算,就硬件蒙皮   1.軟件蒙皮   Ogre本身已經實現了軟件蒙皮,默認情況下就是軟件蒙皮,計算的代碼在void Entity::upda

原创 網上流傳的所謂天龍源碼

網上流傳的所謂天龍源碼,其實並不是天龍的。   代碼是天龍的前身武俠世界的,很完整,但是沒有資源data文件   資源data應該是網友破解的天龍八部的,然後2個拼湊在一起的   所以,如果出現腳本和代碼對不上,不要詫異,也不要懷疑你的代

原创 實在受不了Ogre的Maya導出插件,所以重寫了一下。

自帶的mayaExport,說實話,導出的材質腳本幾乎每個都要改,問題主要有2個   1)默認值全部會寫進去,我了個去,pass和textureUnit裏面一堆默認值。。。。要全部幹掉   2)所有帶透明的圖片的材質,不分青紅皁白,全部是

原创 Ogre渲染優化心得(四) -- 正確地合併靜態實體

天龍的靜態實體合併方法是典型的反面教材.把所有物體都合併在成一個靜態實體了 正確的做法應該是按材質合併.不然效率可能會適得其反   具體原因,和前面講的地形是一樣的,   Ogre的一個靜態實體,是分region的,一個region類似於

原创 Ogre的設計模式分析之-單件模式

小弟從來不盲目崇拜設計模式,項目中也切忌濫用設計模式的,但是有些作用十分不錯的設計模式還是應該運用的,Ogre在這方面就十分不錯,設計模式篩選的十分得當,代碼也十分優雅,對我影響很大,以至於我現在的代碼風格完全改變爲Ogre式的風格。  

原创 天龍八部二進制文件 讀寫序列化類

可以方便地實現天龍二進制的讀和寫   首先是序列化類   #ifndef __CORE_SERIALIZER_UTIL_H__ #define __CORE_SERIALIZER_UTIL_H__ #include <OgreStrin

原创 Ogre設計模式分析-觀察者模式

觀察者模式是遊戲開發中十分常用的模式,Ogre也大量運用了此模式來監聽,比如FrameListener.ResourceListener 這種方式比常見的回調函數更好用,因爲觀察者模式是基於接口的,任何類只要繼承這個接口,註冊後就可以監聽