OGRE學習筆記之一
開始學習3D了,很早就想學了,怎奈數學不好,一直畏懼,可是如果不直麵它,就永遠的害怕,永遠的逃避,這是在很糟.於是,我終於開始了我的3D之旅.
在學校時候就看上了OGRE,十幾萬行代碼的圖形引擎,它給我的感覺很好.不過奇怪的是國內似乎根本沒有OGRE的社區,曾經是在91看到的,可是那邊早已經荒廢了.
我使用的是OGRE的 1.2.4,VC是VC.net 2003,也就是VC7.1.
我是下載源代碼,自行編譯的,編譯需要兩個包,我選擇了以下兩個包:
OgreDependencies_VC71_1.2.0p2.zip
ogre-win32-v1-2-4.zip
第二個包是引擎的源碼包,解壓縮之.
第一個包是引擎編譯的依存庫,裏麵有兩個文件夾,Samples和Dependencies.Samples是依存庫的DLL文件,而Dependencies是依存庫的頭文件和Lib文件.這兩個文件夾隻要覆蓋掉源碼相同的文件夾就可以了.
接下來就開始進行編譯,編譯的過程是緩慢的,總共得耗費半個小時左右.我還把Debug和Release都編譯出來了,那真是痛苦的過程啊...
引擎我放到了G:\OGRE\OGRE1_2_4,編譯完了引擎的開發包之後,下麵開始設置VC環境了.
Tool->Options->Projects->VC++ Directories.
設置頭文件包含路徑:
1.在Show Directories for選擇Include Files;
2.加入:G:\OGRE\OGRE1_2_4\Dependencies\include,
G:\OGRE\OGRE1_2_4\OgreMain\include
設置Lib庫包含路徑:
1.在Show Directories for選擇Librarys Files;
2.加入G:\OGRE\OGRE1_2_4\OgreMain\lib\Release,
G:\OGRE\OGRE1_2_4\OgreMain\lib\Debug
G:\OGRE\OGRE1_2_4\Dependencies\lib\Release
G:\OGRE\OGRE1_2_4\Dependencies\lib\Debug
這個時候就可以開始我們的第一個OGRE了.
其實,OGRE的引擎源碼包裏麵已經自帶了很多的例子,不過看起來相當之難看,反正我覺得很難讀,於是,我自己按照自己較為熟悉的風格修改了Demo,弄了一個名為Empty的項目,裏麵什麼都沒有做,就是一個空白的窗口(準確說是純黑的窗口).
對於我們這些初學者來說,必須得弄清楚Samples\Common\include下麵的三個頭文件:
ExampleApplication.h
ExampleFrameListener.h
ExampleLoadingBar.h
其實這三個文件和MFC有點形似:
ExampleApplication.h裏麵的類就是應用程序類,它是一個基類;
ExampleFrameListener.h裏麵的類算是一個窗口類,鼠標,鍵盤的檢測都在這裏,還有渲染窗口的刷新等;
ExampleLoadingBar.h其實有沒有也沒什麼關係,粗略看了看,它隻是一個加載條的類.
Empty這個項目有以下文件:
/main.cpp
/Empty.h
/Empty.cpp
/Common/ExampleApplication.h
/Common/ExampleApplication.cpp
/Common/ExampleFrameListener.h
/Common/ExampleFrameListener.cpp
/Common/ExampleLoadingBar.h
/Common/ExampleLoadingBar.cpp
我把上麵的三個公用頭文件拆分出了一個cpp,把實現都丟到了cpp裏麵,之前它們都是直接寫在h裏麵的,對於學習來說,極其難看,就拆開了.
我先把三個項目文件內容列出來:
main.cpp























Empty.h







































當你第一次運行OGRE的Demo時,你可以看到,每次運行的時候都會彈出一個配置對話框出來,一兩次還沒什麼,多了就很讓人厭煩,恨不得馬上把它踢掉,
OK,我終於把它給踢掉了!不過在此之前,你必須確定你程序運行的當前目錄下有ogre.cfg這個文件,它就是那個配置對話框所配置的東西.內容大致如下:




















啊,現在我要去掉它,是的,現在我要把這個該死的對話框去掉,打開ExampleApplication.h吧,找到configure()這個函數,你將看到的函數應該是這個樣子的.


















明白了吧,下麵給出我修改後的代碼:


















啊,你應該已經發現了我的修改以後的代碼和之前的代碼不一樣,嗯,是的.因為這個是在cpp裏麵的實現.
翻了一下<Pro OGRE 3D Programming>其實還有更好的代碼,如下:


























OGRE修改窗口標題
OGRE默認的窗口標題為"OGRE Render Window",在哪修改它哪?遠在天邊,近在眼前.就在上麵代碼中的一個函數:mRoot->initialise();
看到了吧,
mWindow = mRoot->initialise(true,"渲染窗口");
這樣,窗口標題就變成了 "渲染窗口"了.
最後更新:2017-10-26 11:04:28