一、资料准备
1、OSG源码下载地址(OpenSceneGraph-3.6.5 release 稳定版本)。
2、OSG第三方依赖库下载地址(3rdParty_VS2017_v141_x64_V11_full)。
注:第三方库版本必须与Visual Studio版本相对应,本文所用只适用于Visual Studio2017 x64,平台工具集版本为v141的情况下。
3、数据包下载地址(OpenSceneGraph-3.4 standard dataset)(我并没有找到3.6.5的数据包,事实证明3.4.0也可以用)
4、编码工具下载地址 (我用的是CMake 3.17.0版本)。
二、编译准备
为了编译的顺利进行,将下载的文件组织如下:
在D盘建立一个OSG-3.6.5的文件夹,然后其他文件如下放置:
3rdParty_VS2017_v141_x64_V11_full.7z 解压到 3rdParty
OpenSceneGraph-Data-3.4.0.zip 解压到 OpenSceneGraph-Data
OpenSceneGraph-OpenSceneGraph-3.6.5.zip 解压到 OpenSceneGraph
另外新建OpenSceneGraph-Build存放编译后的文件
三、安装源码
1、安装CMake之后,打开CMake -gui.exe。
2、按下图所示,填写源码路径与编译目标路径。
3、点击Configure,如下图所示进行设置,然后点击Finish。
4、在红色表格中找到ACTUAL_3RDPARTY_DIR,将其值设置为D:\OSG-3.6.5\3rdParty、找到BUILD_OSG_EXAMPLES,值设置为ON、CMAKE_INSTALL_PREFIX,值为第一步中的目标路径。
5、点击Generate,自此建构完成。
四、编译
1、在第三步的结果路径中,找到OpenSceneGraph.sln,将其用VS2017打开。
选择生成、批生成,,对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间很长,大概 4-5个小时。如果前面步骤没有错误的话,这一步不会报错,只有警告。设置详情如下图所示:
2、第1步完成后,再对INSTALL也进行相应生成编译。这段时间相应会短一点。如图:
五、环境变量
以上步骤进行完成后,对系统变量作如下设置:
1、添加系统变量:OSG_FILE_PATH,变量值为D:\OSG-3.6.5\OpenSceneGraph-Data
2、在PATH变量中添加:D:\OSG-3.6.5\OpenSceneGraph-Build\bin;D:\OSG-3.6.5\3rdParty\bin
配置完成后,进行测试osgversion,osglogo,osgviewer cow.osg。
重点来了:如果这三个命令,哪个不好使,你就全盘搜相应的exe,比如osglogo.exe,看看在哪个路径,环境变量的路径里有木有。一定要加上!!(我就是一直因为这个问题报错,后来我把下边两个都加了就好了)
六、新建OSG项目测试
1、在VS2017下新建C++控制台程序。
2、右键项目,选择“属性”,顶部平台选择x64,左侧配置属性选择“VC++目录”,在包含目录添加:编译目标目录中的include目录。在库目录添加:编译目标目录中的lib目录。具体情况如下图:
3、打开项目属性的链接器,选择“输入”,在附加依赖项添加:
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgUtild.lib
osgGAd.lib
osgViewerd.lib
osgTextd.lib
注:在编译生成的lib文件中,每个lib文件有一对名称相似的文件,其中文件名最后一个字母为“d”的为Debug版本所使用的,没有“d”的为Release版本所使用的。
4、在自己的cpp文件中输入以下代码:
#include "pch.h"
#include<Windows.h>
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
int main(int argc, char **argv)
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}
运行,出现一头牛,说明配置成功。