翻譯聲明: 本系列教程來自Dev
以前用OGRE3D的時候,可以使用合成器來實現各種後期效果的合成。個人覺得移動模糊最炫了。於是就自己嘗試著使用OPENGL渲染了一下。本方法完全屬於我個人獨創。(紅寶書裡沒給例子,只是一帶而過。網上的代碼都不完整,看的我頭暈~~於是才決定自己實現~~)。其實,這東東很簡單。首先,你必須理解OPENGL累加緩衝的意義和作用。明白自己要實現效果(比如移動模糊,景深,消除鋸齒等等)的基本原理,OK,你就可以自己來實現你所想要的效果了。 首先,說說OPENGL累加緩衝。和模板緩衝一樣,你不能直接去寫它。
翻譯聲明: 本系列教程來自Dev
其實OGRE/CEGUI都是跨平台的開發庫,在Linux下編譯它們是件很輕鬆的事情。如果遇到依賴庫(如安裝OGRE時的OIS,CEGUI時的Python的Regex庫等)或工具(產生OGRE1.7工程檔案的CMAKE等)時,首先APT-GET一下。如果GET不到,就去其官網DOWN一下,然後編譯安裝。總之,這個過程並不複雜。另外,如果使用Linux原生的Makefile的話,在configure的時候還可以help一下看看,對一些選項進行on/off。 經過大概兩三個小時(時間和機器有點關係,我
1. 檔案頭,fd/** * @file $FILE_BASE$.$FILE_EXT$ * * @author Vendar Tyan * @date $YEAR$-$MONTH$-$DAY$ * @brief $end$ */ 2. 分割注釋////-----------------------------------------------------------------------------/////////////////////////////////////////////
1. 凸面體與三角網格 三角網格可以很完美地表現一個OGRE模型的物理外形。 OGRE模型和Flour所產生的三角網格就外形而言完全等同, 為了效能起見,一般使用凸面體做物理碰撞。 NxOgre中凸面體最多256個頂點,作為一個大封裝盒把要進行碰撞檢測的對象包圍起來。2. Flour是一個可以把OGRE模型轉換成NxOgre格式的小工具。 包括,特殊的mesh、skeleton和heightfield。3. 使用Flour產生.nxs檔案 flour convert
以前用LUA的時候沒怎麼處理過指令碼變數裡的中文問題。於是,今天試著做了一下。首先,要搞清編碼格式及wchar_t的概念。我用的是ANSI編碼的LUA指令檔。其實做法很簡單,先把要讀取的全域變數壓入LUA棧中,然後擷取並進行類型驗證。這樣就得到了一個char數組,使用WIN32API中的MultiByteToWideChar函數將char數群組轉換到wchar_t數組。最後,可以使用OGRE的UTFString類的asUTF8_c_str轉換wchar_t字串為UTF8編碼。這樣就可以隨便讓CE
1. 包含檔案 #include<ft2build.h> #include FT_FREETYPE_H2. 使用2.1 初始化 FT_Library library; FT_Init_FreeType(&library); FT_Face face; FT_New_Face(library,"abc.ttf",0,&face); FT_Set_Char_Size(); FT_Set_Transform();2.2 渲染
昨天搞到零點才弄出來效果。本來不知道,原來Theora是一個純開源項目。對Linux支援比較好,所以他的安裝也應該遵循“Linux軟體包安裝規範”。那就是“永無止境”的包依賴。。於是乎,編譯TheoraVideoPlugin必須先編譯libtheora(http://theora.org/),ptypes(http://www.melikyan.com/ptypes/),libogg和libvorbis(http://www.vorbis.com/)。整理一下,我基本上編譯了如下動態庫:1.
以前用OGL時,一直使用FreeImage載入紋理圖片。後來使用OGRE/CEGUI,也是用FI載入紋理圖片。但這些都是它們底層管理的,用的時候也就沒什麼特別的感覺了。由於OGRE/CEGUI都使用FreeType2渲染字型,於是乎,就像自己來渲染一下看看。 代碼很簡單,沒什麼好說的。不過自己感覺這個結構流程還是蠻清晰的,貼出來留個紀念(明天開始做CEGUI字型最佳化~~) /** * @file e:/Exercise/FTWorkshop/Exer01/main.cpp * @author
翻譯聲明: 本系列教程來自Dev
最近開始搞UI,去CEGUI官網下了最新的穩定版0.7.1,看DEMO。當然,看CEGUI的設計代碼更有協助。可惜以我現在的時間和條件,根本不允許啊~~等工作穩定以後,少不了要看CEGUI及OGRE的設計源碼。 其實CEGUI的設計很輕便,看DEMO根本就是一種享受。一切都是那麼的順利,知道我想把0.7.1的庫連結到我以前的DEMO中去的時候。問題出現了。OgreCEGUIRenderer這個傢伙出問題了,它居然有純虛函數。。。搞不定,重編譯OGRE1.6.4,使用最新的CEGUI做依賴。還是
我個人認為CEGUI在字型渲染上走了一條貌似優雅,但實際卻被證明是錯誤的道路。(至少我是這麼覺得,我的實驗也是這麼證明著。也許這種想法有錯,真的有錯,找到再改。)首先說說CEGUI處理文字渲染的基本流程。 1. Font::getGlyphData這裡需要一個utf32的codepoint,返回的是一個FontGlyph(糅合了codepoint和Image的Map) 2.
聲明: 這裡只是對NeHe教程閱讀的一點筆記,如果你還沒看過NeHe的課程。那麼我建議你還是先上GameDev去看看,我在這裡並不打算過多的引用其中內容,但是偶爾會有些交合。只是為了給自己一個更清晰的思路。1. 按鍵數組:bool keys[256];2. 訊息處理:LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);WM_ACTIVATE:
1. 初始化SDL:SDL_Init(mode); mode: SDL_INIT_TIMER SDL_INIT_AUDIO SDL_INIT_VIDEO SDL_INIT_CDROM SDL_INIT_JOYSTICK SDL_INIT_NOPARACHUTE SDL_INIT_EVENTTHREAD SDL_INIT_EVERYTHING2. 擷取出錯運算式: SDL_GetError();3. 退出程式,清除系統:SDL_Quit()
1. 基本操作: glTranslatef(); glRotatef(); glBegin(); // GL_TRIANGLES/QUADS glColor*(); glVertex*(); glEnd();2. 紋理映射: Aux_RGBImageRec *auxDIBImageLoad(char *); // 此結構裡包含了sizeX(映像寬度),sizeY(映像高度)和data(映像資料) glGenTextures();
翻譯聲明: 本系列教程來自Dev
使用Ogre&CEGUI時,OIS預設獨佔滑鼠和鍵盤。適合全屏狀態,視窗狀態就不好玩了。1. 取消鍵鼠獨佔在OIS建立輸入系統時,設定參數。w32_mouse,DISCL_FOREGROUND|DISCL_NONEXCLUSIVEw32_keyboard,DISCL_FOREGROUND|DISCL_NONEXCLUSIVE 2.
1. 狀態宏#define STATE_ID_UNCARING 1#define STATE_ID_MAD 2#define STATE_ID_RAGE 3#define STATE_ID_BERSERK 4#define STATE_ID_ANNOYED 5 2. 輸入宏#define INPUT_ID_PLAYER_SEEN 1#define INPUT_ID_PLAYER_ATTACK 2#define INPUT_ID_PLAYER_GONE 3#define
最近重拾LUA,覺得這個語言太美了。怎一個“簡單”了得。不過我現在還太探索它和CEGUI的配合使用問題。雖然LUA的文法半年前就基本掌握了(那是因為LUA最簡單的就是文法了~~XD),可現在還得琢磨如何讓它和CEGUI及我的程式進行資料共用。好讓我的LUA指令碼裡的回呼函數可以直接操作APP裡的資料(不知道這樣做安全性如何?不過,若不這樣,LUA的功能就不能擴大,只停留在非互動模式)。剛開始玩OGRE的時候,就覺得在一個視窗裡預覽3D角色很有趣。到了現在才開始做,因為遊戲牽涉的方面太廣了(如果