導讀 | 本文將介紹在 Windows 平台下,OpenSceneGraph 源碼的編譯、發布、以及 chm 文檔生成。文章將使用 Visual Studio 2015 ,以 3.6.4 版本為例,編譯生32 位 (x86) 版本 進行說明。 最后一小節提供 3.6.4 版本編譯的發布 (OpenSceneGraph-3.6.4-VC2015-x86 )、幫助文檔(OpenSceneGraphReferenceDocs-3.6.4.chm)和 學習文檔 的下載,以供參考。 |
目錄 |
OpenSceneGraph是一個開源的三維引擎,應用廣泛,可通過相關網站進行進一步的了解
官方網站(英文):http://www.openscenegraph.org/
同時這里推薦 《OpenSceneGraph三維渲染引擎設計與實踐》一書,個人認為比較適合新手入門,在本文最后 “相關下載” 章節,可以下載
這里使用 Visual Studio 2015, 對 OpenSceneGraph 2.6.4 源碼進行編譯 32 位(x86)版本
版本控制軟件 git , 用於下載源代碼
安裝(編譯)工具 CMake ,用來構建具體平台的項目文件(這里用來構建 VS 的解決方案 Solution)
如果想要自己生成代碼文檔,則需要額外准備:
文檔自動生成工具 doxygen , 用於更具代碼注釋自動生成參考文檔
圖像可視化軟件 graphviz, 這里用來輔助構建文檔中的圖表 (這里下載 Stable 2.38 Windows install packages)
下載並安裝以上工具
參考 osg 中文網下載說明,使用 git 下載代碼(3.6.4 版本)到本地,(個人建議單獨創建一個父目錄用來存放 osg 相關的代碼和數據)
git clone --branch OpenSceneGraph-3.6.4 https://github.com/openscenegraph/OpenSceneGraph.git
這里下載到 D:\osg 目錄,如下:
OpenSceneGraph 本身沒有包含讀取 png、jpeg 的模塊,為了編譯的發布功能相對完善,這里先下載依賴的第三方模塊
當前(2020/04/14)中文網提供的依賴目前鏈接失效了,這里訪問英文官網提供的第3方依賴: http://www.openscenegraph.org/index.php/download-section/dependencies
這里下載其中 使用VS2015 編譯的版本:
由於這里使用 VS2015 編譯 x86 版本,這里下載 v140-x86 版本依賴,放置到 D:\osg\3rdParty 目錄下
打開安裝 CMake 目錄下的 cmake-gui.exe
將第(1)步下載的源代碼中的 CMakeLists.txt 拖放到軟件中,如下:
構建代碼的路徑 最好選擇另一個和 源代碼不同的路徑,這樣構建的數據和源代碼目錄分離數據比較清晰不容易混亂。
設置第3方庫目錄,比如這里使用的 : D:/osg/3rdparty
如果需要想要構建使用例子(對新手有幫助,不過編譯會多費些時間),可以勾選 BUILD_OSG_EXAMPLES
如果需要自己構建文檔,可以勾選 BUILD_DOCUMENTATION
如果勾選 BUILD_DOCUMENTATION,那么需要如下圖,勾選 “Advanced” , 確保 DOXYGEN_DOT_EXECUTABLE 和 DOXYGEN_EXECUTABLE 指定到安裝的 Graphviz 和 doxygen 對應的文件,如下圖所示
點擊 “Configure” 再次確認一下配置,確認完畢后,點擊 "Generate" 生成解決方案,成功生成后,點擊 “Open Project” 可打開生成的 VS 方案
最后,在項目中,分別在 Debug 和 Release 下構建 ALL_BUILD 項目即可:
編譯完成后,如果要安裝發布到之前 CMake 中指定的目錄 C:/Program Files(x86)/OpenSceneGraph
可以構建 INSTALL 項目,將自動完成復制安裝(Debug 和 Release 需要分別安裝)
執行成功后,安裝目錄下將出現對應的文件如下:
復制安裝成功后,為了后續開發,需要配置一些環境變量:
設置 OSG_3RDPARTY_DIR 為剛才下載的第三方庫的路徑 D:\osg\3rdParty
設置 OSG_NOTIFY_LEVEL 打印提醒等級為 WARN
設置 OSG_VERSION 為當前使用的版本號 3.6.4 (方便如果升級版本的時候使用)
設置 OSGDIR 為當前代碼復制安裝的目錄
在 Path 中添加路徑:%OSGDIR%\bin;%OSG_3RDPARTY_DIR%\bin;%OSGDIR%\bin\osgPlugins-%OSG_VERSION%;
為了方便快速驗證是否安裝成功,可以打開命令行,執行 osgversion.exe
如果想測試運行更多數據,可以下載使用官方提供的標志示例數據 http://www.osgchina.org/show-list.php?id=38
並配置 配置 OpenSceneGraph 內部專用的環境變量 OSG_FILE_PATH 如下:
OSG_FILE_PATH 是 osg 內部約定專用的變量,當指定打開文件不指定文件名時,osg 會自動搜索該目錄
設置完后,命令行可執行:
或者:
本地創建一個 VS 控制台應用程序項目
在項目屬性頁中,設置 C/C++ -> General(通用)->Additional Include Directories (額外include 目錄),添加 $(OSGDIR)\include
在項目屬性頁中,設置 C/C++ -> Linker (鏈接器) ->General->Additional Library Directories (額外庫目錄),添加 $(OSGDIR)\lib
在項目屬性頁中,設置 C/C++ -> Linker (鏈接器) ->input->Additional Dependencies 下, 添加需要導入的 lib
這里debug 和 release 需要區分導入,debug 版本庫名稱有 d 后綴
這里根據我生成的庫文件,添加 debug 版本如下:
OpenThreadsd.lib
osgd.lib
osgAnimationd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgPresentationd.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUId.lib
osgUtild.lib
osgViewerd.lib
osgVolumed.lib
osgWidgetd.lib
這里根據我生成的庫文件,添加 release 版本如下:
OpenThreads.lib
osg.lib
osgAnimation.lib
osgDB.lib
osgFX.lib
osgGA.lib
osgManipulator.lib
osgParticle.lib
osgPresentation.lib
osgShadow.lib
osgSim.lib
osgTerrain.lib
osgText.lib
osgUI.lib
osgUtil.lib
osgViewer.lib
osgVolume.lib
osgWidget.lib
配置完畢后,添加代碼如下:
#include "stdafx.h" #include <osgDB\ReadFile> #include <osgViewer\Viewer> int main() { osgViewer::Viewer viewer; viewer.setSceneData(osgDB::readNodeFile("cow.osg")); return viewer.run(); }
#include "stdafx.h"
#include <osgDB\ReadFile> #include <osgViewer\Viewer> int main() { osgViewer::Viewer viewer; viewer.setSceneData(osgDB::readNodeFile("cow.osg")); return viewer.run(); }
運行效果:
如需生成文檔,可以編譯 doc_openscenegraph
默認情況下,編譯生成的只是 html 文檔,如果想要生成 chm 文檔,還需要再 在 doxygen 配置文件 (doxyfile)中:
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = OpenSceneGraphReferenceDocs
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER = "D:/osg/OpenSceneGraph-source-3.6.4/doc/Doxyfiles/custom_Footer.html"
HTML_STYLESHEET =
HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
GENERATE_HTMLHELP = YES
CHM_FILE = "../OpenSceneGraphReferenceDocs-3.6.4.chm"
HHC_LOCATION = "C:/Program Files (x86)/HTML Help Workshop/hhc.exe"
GENERATE_CHI = NO
將紅色部分 GENERATE_HTMLHELP 設置為 YES (參考)
這樣,在編譯成功后,在編譯目錄下則會生成 chm 文檔:
這里已經編譯好了 OpenSceneGraph-3.6.4-VC2015-x86
連同編譯好的參考手冊 OpenSceneGraphReferenceDocs-3.6.4.chm
和 OpenSceneGraph 學習電子書 《OpenSceneGraph三維渲染引擎設計與實踐》
放置到了百度雲盤
百度雲盤:https://pan.baidu.com/s/1SX8nu83IvnmKmj6pwI9vxg 密碼 :iplk