1.軟件獲取
2.編譯準(zhǔn)備
- 先將CMake安裝后,將剩余3個文件解壓后,并將源代碼改名為OSG-Source-3.4.0,數(shù)據(jù)改名為OSG-Data-3.4.0。而第三方庫,需要先將其中的X86文件夾剪切出來,和三個解壓文件在同一級目錄中,刪除原來的3rdParty文件夾,并將X86文件夾改名為3rdParty。此時三個文件夾的目錄地址分別為:
D:\OSG\OSG-Source-3.4.0
D:\OSG\OSG-Data-3.4.0
D:\OSG\3rdParty
- 將D:\OSG\3rdParty\include\modules內(nèi)文件全部復(fù)制到D:\OSG\3rdParty\include\libxml文件夾內(nèi)。
- 在D:\OSG\OSG-Source-3.4.0文件夾內(nèi)建立兩個子文件夾build和bin,用于存放CMake生成的工程文件和VS編譯后所要INSTALL的庫文件等。
3.Cmake編譯
按照下圖填入源代碼位置和CMake所生成的工程的存放位置
將D:\OSG\OSG-Source-3.4.0內(nèi)的文件CMakeLists.txt拖入CMake,并修改build目錄為下圖所示:

點擊Configure,選擇編譯器,這里使用的是默認(rèn)的2010,確定后等待第一輪配置完成。
第一輪Configure完成后需要進(jìn)行以下手動修改:
ACTUAL_3RDPARTY_DIR -> D:/OSG/3rdParty
BUILD_OSG_EXAMPLES -> ON
CMAKE_INSTALL_PREFIX -> D:/OSG/OSG-Source-3.4.0/bin (即后面INSTALL的輸出目錄)
該教程與其他不同的地方在于,這里還配置了其他內(nèi)容,目的就是為了防止出現(xiàn)不能加載tff格式字體和jpg、png格式圖片等需要用到第三方插件的功能。先將軟件上的Grouped功能勾選上,并修改如下(2處):
(第一處)手動找到FREETYPE_LIBRARY_DEBUG為D:\OSG\3rdParty\lib\freetype2311MT_D.lib
(第二處)手動找到LIBXML2_INCLUDE_DIR為D:\OSG\3rdParty\include\libxml
再次點擊Configure,等待第二輪配置完成。
第二輪配置完成后,會看到CMake自動根據(jù)我們配置的LIBXML2_INCLUDE_DIR地址補(bǔ)全了Grouped中的LIBXML2,如下圖所示:
而后,找到BUILD_MFC_ EXAMPLE選項,選中打鉤。
- 最后一次點擊Configure,等待第三輪配置完成。完成后,就可以點擊Generate選項了,Generate完成之后,所有輸出信息如下圖所示:

4.VS編譯
- Step1:
在D:\OSG\OSG-Source-3.4.0\build 目錄下找到CMake生成的解決方案 OpenSceneGraph.sln,后雙擊打開。
- Step2:找到批生成

- Step3:編譯程序的Debug版本和Release版本(ALL_BUILD版,作者耗時4:30)
完成后編譯輸出信息如下圖所示:

- Step4:編譯程序的Debug版本和Release版本(INSTALL版,作者耗時15min),并取消ALL_BUILD的選中狀態(tài)

5.環(huán)境變量設(shè)定
這里詳細(xì)說明一下第四步,一般Path變量本身就有的,不需要新建,使用時直接在后面加分號后緊跟新增的Path,這里設(shè)置的是D:\OSG\OSG-Source-3.4.0\bin\bin,即“INSTALL”時的導(dǎo)出位置。而像環(huán)境變量OSG_FILE_PATH這種屬于某個軟件專有的變量,就需自己新建一個,新建后,指定路徑為D:\OSG\OSG-Data-3.4.0,即解壓縮的數(shù)據(jù)文件所在位置。
6.測試1
使用組合鍵“WIN+R”,輸入“cmd”,進(jìn)入DOS窗口,使用命令“ osgviewer cow.osg ”,若安裝無誤,則會正常顯示出一條金牛(如下圖所示):

7.測試2
先建立一個win32的控制臺項目,然后按照正常流程這里需要進(jìn)行屬性配置,包括“包含目錄”、“庫目錄”和“附加依賴項”,但每一次創(chuàng)建一個工程項目都需要這樣添加,是不是有點太過麻煩,這里介紹一種建立屬性表的方法用于解決,方法如下:
- Step1
若是在VS軟件中沒能找到屬性管理器窗口就先按照上圖中的方法調(diào)出該窗口,緊接著分別在Debug目錄和Release目錄下創(chuàng)建兩個屬性表文件,并分別命名為如圖名字(可自由定義,但要容易區(qū)分)

Step2
先雙擊打開屬性表文件OSG_340_VS10_Win32_Debug,進(jìn)行如下配置:
在包含目錄中填入地址:D:\OSG\OSG-Source-3.4.0\bin\include
在庫目錄中填入地址:D:\OSG\OSG-Source-3.4.0\bin\lib
在第三步指向的輸入處,找到附加依賴項,在其中填入以下內(nèi)容(具體要以D:\OSG\OSG-Source-3.4.0\bin\lib目錄下的實際庫文件為準(zhǔn),注意這些庫文件都帶了字母“d”,表示Debug版本):
OpenThreadsd.lib
osgd.lib
osgAnimationd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgPresentationd.lib
osgQtd.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUId.lib
osgUtild.lib
osgViewerd.lib
osgVolumed.lib
osgWidgetd.lib
屬性表文件OSG_340_VS10_Win32_Release的配置與Debug版本只有附加依賴項上有些許不同,不同之處就是所有的lib文件不帶字母“d”,列出如下:
OpenThreads.lib
osg.lib
osgAnimation.lib
osgDB.lib
osgFX.lib
osgGA.lib
osgManipulator.lib
osgParticle.lib
osgPresentation.lib
osgQt.lib
osgShadow.lib
osgSim.lib
osgTerrain.lib
osgText.lib
osgUI.lib
osgUtil.lib
osgViewer.lib
osgVolume.lib
osgWidget.lib
最后一定不要忘記分別保存?。?!
- Step3
建立源文件,使用以下代碼進(jìn)行測試:
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer->run();
}
運(yùn)行結(jié)果出現(xiàn)一條金牛,則表示成功。
8.測試3
|