雖然出生的時候,沒有說過“Hello World!”,但是自從走上了編程之路,每一次輸出“Hello World!”的時候,都覺得好比中了彩票大獎似的;
仔細算算,從2012年暑假到現在,經歷了3年半的光陰,這段時間,不僅是知識、閱歷、成長獲得最大的一段,也是人生的一大轉折點。在這期間,得以繼續深造學習自己的專業,雖然踏入這行的時候,也是調劑來的,但是我用這3年的時間,惡補自己7年的不足;2015年,發生了三件大事,我畢業了,我工作了,我有女票了(三件事的重要程度遞增);吃得苦中苦,方位人上人,為自己經歷的苦逼和磨難,敬上自己的感激,同時也為生命中支持和鼓勵我的人,真心的說一句:感謝有你!
下面進入正題,首先聲明環境搭建步驟不是原創的,紀錄在此的目的,一是以便之后查看,二來希望對大家有所幫助:
一.相關文件下載
1.1 Osg源碼
OpenSceneGraph的3.0.0.zip(現在最新版已經到3.4了)
1.2 Osg第三方庫
下載鏈接:http://members.iinet.net.au/~bchrist/3rdParty_VC10_x86_x64.zip
1.3 OSG官方示例數據包
1.4 安裝源碼工具(雖然寫的x86的,但是64位系統也可以用的)
1.4.1 之前版本下載連接: cmake-2.8.4-win32-x86.exe
1.4.2 最新版本下載連接: cmake-3.4.1-win32-x86.exe
二、編譯環境創建
為了編譯的順利進行,將下載的文件組織如下,在E盤建立一個OSG的文件夾,然后其他文件如下放置:
E:\OSG\OpenSceneGraph,源碼解壓后放於此;
E:\OSG\3rdParty,第三方依賴庫解壓后放於此;
注意:這個里面的第三方庫一般包含x64和x86的兩個版本的,這里要根據你自己的電腦需要選擇一個然后把里面的文件復制到3rdParty文件夾中。
由於本人的電腦是64位的系統,所以我選擇的留下了的是“x86”。
之所以選擇x86,也就是32位是因為64位的隱患很大,很多庫沒有64位的,
而我也自己親身實踐過,在后面的VS批生成的時候導致ALL_INSTALL出現了2個失敗,在后面的直接4個全失敗。所以這里我建議選擇使用32位的;
E:\OSG\data,數據包解壓后放於此。
三.編譯OSG源碼
3.1 首先安裝CMake,之后打開CMake -gui.exe
這里要補充說下,因為有些教程里面說到,在創建” E:\OSG\OpenSceneGraph”文件夾之后,
最好在里面新建兩個文件夾,一個叫”build”;一個叫”bin”;
3.2 將源碼OpenSceneGraph文件夾里頭的CmakeLists.txt,拖到Cmake界面,如圖:

然后將“where to build the binaries”設置為,剛剛新建的“build”文件夾,具體如上圖。
3.3 點擊Configure,選擇Visual Studio 10,如下圖:

這里需要說的是,因為我上面第三方依賴庫我保留的是x86,所以我這里也就自然選擇VS10就可以了;
另外還有一個是VS10 Win64 的那就是要對應之前的第三方依賴庫的選擇了;
3.4 點擊Finish之后,等一下,然后進行相關設置:
ACTUAL_3RDPARTY_DIR:E:/OSG/3rdParty
BUILD_OSG_EXAMPLES :勾上
CMAKE_INSTALL_PREFIX:E:/OSG/OpenSceneGraph/
如下圖:
3.5 點擊Configure后,等一會;
然后將Advanced打勾,將BUILD_MFC_ EXAMPLE設置為on,進行最后一次的Configure配置,點擊Configure:
如果這過程中下面的這個區域:

出現了紅色的亂碼,可能是跟你的VS10的一些默認項目文件存放的路徑有關,之所以會亂碼,是因為可能上面說到的路徑有中文。
所以,建議不要去修改VS10的一些默認的存放的路徑,避免不必要的錯誤。
當然隨着這步勾選上BUILD_MFC_ EXAMPLE,正常的情況應該是中間區域的紅色會全部消失,但是下面的區域你去查看會發現任然有些紅色的語句警告,這無關緊要;
繼續進行下一步。
3.6 點擊Generate,自此建構完成。
四.編譯階段
4.1 用VS2010打開OpenSceneGraph.sln(此文件在E:\OSG\OpenSceneGrap\build下);
找到菜單:生成-批生成,對All_BUILD進行生成,選擇(Debug和Release兩個版本),這段編譯時間是很長的,估計2個小時左右,主要看電腦,這的確要很久;
建議大家要耐心等待,代碼好像要走到13000左右差不多就好了,這段時間可以打局LOL或者看看視頻之類的,玩笑了。
4.2 第1步完成后,再對INSTALL也進行相應生成編譯,這段時間很快的:

五.數據轉移
在C盤新建OSG文件夾(這個可以放在你想放的地方,不僅僅限於C盤,因為畢竟不是所有人都是把C盤設置的很大,而且不免有些人的C盤是容量不大的SSD)
將E:\OSG\OpenSceneGraph下的bin,include,lib文件夾,拷貝到C:\OSG下;
將E:\OSG\data下的數據,拷貝到C:\OSG\data下;
這幾個文件是OSG需要的。
六.環境變量設置
6.1右擊“計算機”,然后“屬性”,在計算機屬性窗口的左邊有個高級系統設置,如下圖:
點擊之后,高級--環境變量,對系統變量設置如下:
新建一個變量:OSG_FILE_PATH:C:\OSG\data
追加變量內容:PATH:C:\OSG\bin;
6.2 在命令行(CMD)進行測試:
osgversion
osgviewer cow.osg
osglogo
注意:測試osglogo時,出現如下錯誤:
'osglogo' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
這個原因我搜索了一下osglogo.exe,發現它存在於兩個地方:
E:\OSG\OpenSceneGraph\share\OpenSceneGraph\bin
E:\OSG\OpenSceneGraph\build\bin
實際上到這一步,已經編譯成功,如果覺得非得調出osglogo的話,就把osglogo.exe復制到C:\OSG\bin下面,就可以了。
七.新建OSG項目測試
7.1 在VS2010下,找到C++,新建WIN32控制台程序;
7.2 添加一個cpp;
7.3 輸入以下代碼:
1 #include <osgViewer/Viewer> 3 #include <osgDB/ReadFile> 5 int main( int argc, char **argv ) 7 { 9 osgViewer::Viewer viewer; 11 viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) ); 13 return viewer.run(); 15 }
7.4 右鍵項目,選擇“屬性”,選擇“VC++目錄”,在包含目錄添加:C:\OSG\include,在庫目錄添加:C:\OSG\lib

7.5 打開項目屬性的鏈接器,在輸入厘米那,附加依賴項加上:
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgUtild.lib
osgGAd.lib
osgViewerd.lib
osgTextd.lib
7.6 運行,效果如下圖:

Congratulations,下面你就可以享受OSG的世界了!
