OSG(OpenSceneGraph)安装
本安装备忘参考:
1.下载必要安装包
- OpenSceneGraph的3.4.0.zip安装包
- Osg第三方库:3rdParty_VC10_x86_x64.zip
- OSG官方示例数据包
- 安装源码工具cmake-3.4.1-win32-x86.exe (64位也可以使用)
2.创建编译环境
在C盘之下建立OSG文件夹,然后按照如下方式组织:
- 建立C:\OSG\3rdParty文件夹,将第三方库的内容解压至此
- 建立C:\OSG\OpenSceneGraph-3.4.0文件夹,将OpenSceneGraph的3.4.0.zip安装包内容解压至此,并且在其中新建bin和build两个文件夹
- 建立C:\OSG\OpenSceneGraph-Data-3.4.0文件夹,将OSG官方示例数据包内容解压至此
3.编译OSG源码
首先安装CMake,之后打开CMake-gui.exe
打开CMake-gui.exe然后将C:\OSG\OpenSceneGraph-3.4.0\CmakeLists.txt,拖到Cmake界面
再修改路径,如下图所示
修改路径在点击configure之前,先确保电脑中有ucrtbased.dll文件(这是因为我是使用WIN7上的VS2015进行代码生成的),在如下两个位置中检查
- C:\Windows\System32
- C:\Windows\SysWOW64
若没有,可以在脚本之家上下载ucrtbased.dll,然后把文件放到上面两个目录中。
至此,便可以点击cmake左下角的configure按钮,开始进行配置。我选择默认的VS2015。等它运行完成
configure运行完成然后在红色区域中找到下面三项并修改:
- ACTUAL_3RDPARTY_DIR 设置为C:/OSG/3rdParty
- **BUILD_OSG_EXAMPLES ** 打钩
- CMAKE_INSTALL_PREFIX C:/OSG/OpenSceneGraph-3.4.0/bin (相关的库文件存放的地址)
然后点击configure进行二次配置,等待编译完成
二次配置完成然后将Advanced打勾,将BUILD_MFC_ EXAMPLE设置为on(打钩)),进行最后一次的Configure配置
最后一次配置配置完成后,确保没有红色区域出现
完成最后,点击Generate,自此建构完成。
4.编译程序
在C:\OSG\OpenSceneGraph-3.4.0\build中找到OpenSceneGraph.sln文件
用VS打开,然后找到菜单:生成-批生成,对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间是很长的(我用了4个小时,囧rz)
批生成然后,再次选择“批处理”->INSTALL,再次生成
再次生成(接下来有点放飞自我了,我也不知道对不对了囧rz)
然后,把如图所示,bin中的include、lib、bin中的文件都放到build文件夹中的include、lib、bin文件夹中(如果有相同冲突的,则默认选择替换),把include的文件中的内容也放到build中的include文件夹中。
文件移植
5.设置环境变量
在系统环境变量中,添加变量
OSG_FILE_PATH : C:\OSG\OpenSceneGraph-Data-3.4.0
在Path中添加值:
C:\OSG\OpenSceneGraph-3.4.0\build\bin;
保存。
6.测试
打开cmd,输入
- osgversion
- osgviewer cow.osg
- osglogo
有如下所示
7.建立工程项目测试
新建一个C++的WIN32控制台程序,输入如下代码:
#include "stdafx.h"
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
int main()
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}
在工程->右键->属性中,设置C/C++目录
即:
-
包含目录:追加C:\OSG\OpenSceneGraph-3.4.0\build\include;
-
库目录:追加C:\OSG\OpenSceneGraph-3.4.0\build\lib;
再打开链接器,在输入处,附加依赖项加上:OpenThreadsd.lib;osgd.lib;osgDBd.lib;osgUtild.lib;osgGAd.lib;osgViewerd.lib;osgTextd.lib;
最后Ctrl+F5,就可以看到有牛的3D图像运行了!