导读 |
本文将介绍在 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