参考我的CSDN博客的上篇文章,下面是对那篇文章的补充。
一、下载工具及资源
Cmake工具 cmake-3.7.1-win32-x86
Osg源码 OpenSceneGraph-3.4.0
Osg数据包 OpenSceneGraph-Data
Osg第三方库 OSG_3rdParty_VS2015x64
二、准备工作
找一个干净的文件夹新建如下文件夹,并将第一项下载的资源存到对于的文件夹中。
作者是存在E:\Project3D\osg_exploit下。
其中多出来的OSG_build文件夹是为了存放cmake编译后的结果的。
三、cmake编译
1、打开cmake.gui。
打开CMAKE GUI程序,在"Where is the source code"中选择OpenSceneGraph文件夹,因为里面有顶层的CmakeList.txt,是源码的顶层目录,如果里面没有CmakeList.txt就要看看是不是源码外又建了几级没用的文件夹。在"Where to build the binaries" 中选择一个目录来生成VC工程,一般这个目录和源码目录都离的不远,甚至有人把其选成同一个目录,根据各人习惯吧,如果选在同一级会生成大量的文件与源码掺在一起,很难看。
对于作者的文件需要修改两个地方:
Where is th source code 添加为刚才放osg源码的文件夹
Where to build the binaries 添加为刚才新建的OSG_build文件夹
2、点击configure
1)此时会让你选择VS的版本,选择如图所示
2)configure时要勾选如下选项
Configure时的下面各个Name是什么意思,在《OSG程序设计教程》中详细解释,大家可以参考。相关书籍在文章结尾有获取方法。
首先将ACTUAL_3RDPARTY_DIR设置到你的3rdparty文件夹中,如果按上面的说明在源码的上一级文件夹中,会自动找到,这样很库就会自动搜索到,然后点config注意那些红的项,表示是必选的和因为某些项的选择新出现的,将BUILD_OSG_EXAMPLES置为ON,这样工程中才包含例子的工程。将CMAKE_INSTALL_PREFIX设置到OpenSceneGraph目录,则二进制文件会被自动安装到OpenSceneGraph\bin,当然你也可以设置在别处,也可以不设置默认。
3)configure知道没有出现红色,并且显示configure done。
3、点击generate,显示generate done.
到此为止,cmake编译部分结束。以上工作造成的结果为,在OSG_build文件夹下出现了如下内容
四、VS2015编译
打开E:\Project3D\osg_exploit\OSG_build下的OpenSceneGraph.sln
本部分要进行两个部分的编译。
1、生成->批生成
点击生成,接下来是两到三个小时的漫长等待。
在这个过程中,可能电脑会非常的卡,因为CPU可能会在某些时刻达到100%,这是你可以让电脑自己跑,去做别的事情。
生成成功后,OSG_build文件夹下include、bin、lib里面会得到很多东西。
而这三个目录下的东西就是我们想要的,也就是我们整个编译过程所需要的结果的前一步。
对于这个结果,include文件夹下应该是不完整的,需要将这个结果和Osg源码 OpenSceneGraph-3.4.0下的这三个文件进行整合才可以。
整合有两个方法,下一步就是其中一个方法。
2、生成->批生成
右键单击INSTALL工程,然后构建它,它会将编译结果拷到CMAKE_INSTALL_PREFIX指定的地方。
本文是生成到 C:\Program Files\OpenSceneGraph 这个路径地址是刚才cmake中configure时选择的。
本文install后的结果为
其中Data文件是从一开始的数据文件OpenSceneGraph-Data拷贝过来的。
这一步如果出现问题也可以手动整理。具体整理的方法为:
编译成功后,在C盘新建一个文件夹,名为OSG
1、把刚刚生成的D:\OSG\build下的bin、include、lib三个文件拷贝到C盘的OSG下面
2、将D:\OSG\OpenSceneGraph下的include里的文件夹全部拷贝到C:\OSG3.4.0\include下
2、在C盘的OSG下面新建文件夹,名为data,将之前下载好的数据拷贝过来。
这样OSG就算构建完毕了,我们就是为了include, lib,和bin的。当然你也可以把这三者给堆到源码目录或者构建目录或者这三者都在一起,只要理解了,都不是问题了。
五、环境变量配置:
1、OSG_FILE_PATH C:\Program Files\OpenSceneGraph\Data
2、PATH C:\Program Files\OpenSceneGraph\bin
配置第一个OSG_FILE_PATH是指,在命令行任何目录下,都可以使用
osgviewerd cow.osg
其中cow.osg是在Data目录下的。Data目录是osgviewerd未指定cd目录时的默认目录。
配置第二个PAHT是指,可以在命令行下使用osgviewerd命令。
六、在VS2015中运行第一个程序
接下来配置的原理可以查看我的上一篇博客“ 从OSG配置看-VS调用外部开源库配置 ”
对于本次配置如下
1、新建vs工程,新建一个空项目。然后新建一个cow.cpp
2、bin配置环境变量,第五点写了
3、Include配置
在vs中右击项目解决方案---属性---vc++目录----包含目录中需要填入的就是include文件夹
C:\Program Files\OpenSceneGraph\include
4、Lib配置
这里分为两步。第一步,右击项目解决方案---属性---VC++目录----库目录种填写lib文件地址;
C:\Program Files\OpenSceneGraph\lib
第二步,右击项目解决方案---属性---链接器---输入----附加依赖项里添加所使用的库名字(*.lib)
osgViewer.lib;osgText.lib;opengl32.lib;osgGA.lib;osgDB.lib;osgUtil.lib;osg.lib;OpenThreads.lib
osgManipulator.lib;osgParticle.lib;osgShadow.lib;osgSim.lib;osgTerrain.lib;
5、运行第一个代码,代码解释可以参考《OSG程序设计教程》
本次配置参考两个网址,一篇文档,在结尾表示感谢。
http://www.cnblogs.com/smbx-ztbz/p/7197983.html
《OSG程序设计教程》
关于OSG的相关书籍以及教程可以在如下下载,主要包含如下资料
在我的CSDN下载
http://download.csdn.net/download/ax_hacker/10049214
七、可能出现的问题
引用:http://blog.csdn.net/u013045316/article/details/52051677
有些同学在初始测试OSG时,在命令行中,输入osgViewerd cow.osg回车,
可能系统提示缺失zlib.dll和zlibd.dll,这两个分别对应Release和Debug版本
这两个dll均可以在OSG依赖的第三方库3rdParty文件夹中可以找到,注意x86与x64选择,
将这两个dll拷贝至OSG的bin目录(你加入环境变量path的路径)下即可,然后再测试
如果能成功运行,程序将会打开一个“母牛”的3D模型。
希望可以帮到初学者!