说明:
前提条件
操作系统为Windows10,并且已经安装了:
准备工作
-
克隆OSG源码:
git clone https://github.com/openscenegraph/OpenSceneGraph.git -
下载第三方依赖(选择VisualStudio 2017 - Full package for 64 bit)
-
下载示例项目的模型数据
一、组织文件目录树
按照下面方式组织下载好的内容:
-
D:\OSG
-
OpenSceneGraph
-
CMakeLists.txt等其它源码内容
-
build(自己新建,编译目录)
-
install(自己新建,安装目录)
-
-
3rdParty
- bin、gdal-data等第三方依赖内容
-
OpenSceneGraph-Data
- Catch、Configuration等模型数据内容
-
二、使用CMake生成VS解决方案
-
打开CMake(cmake-gui)程序,
-
源码目录填写
D:/OSG/OpenSceneGraph -
构建目录填写
D:/OSG/OpenSceneGraph/build
-
-
点击Configure,在弹出的窗口中选择:
-
Visual Studio 15 2017 -
x64
-
-
出现很多行红色底纹的配置项,更改其中两处:
-
勾选
BUILD_OSG_EXAMPLES -
CMAKE_INSTALL_PREFIX改为D:/OSG/OpenSceneGraph/install
-
-
继续点击Configure,直到红色底纹消失。
-
点击Generate,生成VS解决方案。完成后,关闭CMake。
三、使用Visual Studio编译并安装
-
使用Visual Studio 2017打开
D:\OSG\OpenSceneGraph\build\OpenSceneGraph.sln。 -
菜单
生成→批生成,勾选项目ALL_BUILD对应的Debug和Release,点击生成。此过程大约需要2小时。
-
右击解决方案资源管理器里的
INSTALL,点击生成。完成后关闭Visual Studio。
四、添加环境变量
-
添加如下环境变量:
变量名 值 OSG_ROOT D:\OSG\OpenSceneGraph OSG_BIN_PATH %OSG_ROOT%\install\bin OSG_INCLUDE_PATH %OSG_ROOT%\install\include OSG_LIB_PATH %OSG_ROOT%\install\lib OSG_SAMPLES_PATH %OSG_ROOT%\install\share\OpenSceneGraph\bin OSG_FILE_PATH D:\OSG\OpenSceneGraph-Data -
在PATH环境变量中添加:
-
%OSG_BIN_PATH%
-
%OSG_SAMPLES_PATH%
-
五、测试是否安装成功
在PowerShell中使用以下命令进行测试:
-
osgversion
-
osglogo
-
osgviewer cow.osg
说明:以上命令均为Release版,Debug版的命令需要在最后加个d,如osgversiond。
常见问题:
如果可以查看OSG版本,但无法显示Logo,需要将D:\OSG\3rdParty\bin目录下的zlib.dll和zlibd.dll复制到D:\OSG\OpenSceneGraph\install\bin目录下。
六、HelloWorld
接下来使用Visual Studio 2017创建一个最基本的OSG项目。
-
菜单
文件→新建→项目,选择Visual C++的空项目,确定。 -
工具栏中选择
Debug、x64。 -
新建源文件
main.cpp,写一个空的main函数,运行一下。 -
更改项目属性:
-
C/C++ - 常规 - 附加包含目录:
$(OSG_INCLUDE_PATH) -
C/C++ - 预处理器 - 预处理器定义:
WIN32、_WIN32、NDEBUG(回车符分隔) -
链接器 - 常规 - 附加库目录:
$(OSG_LIB_PATH) -
链接器 - 输入 - 附加依赖项:
osgd.lib、osgGAd.lib、osgDBd.lib、osgViewerd.lib、osgTextd.lib、osgUtild.lib、OpenThreadsd.lib(回车符分隔)
-
-
main.cpp内容:
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
int main() {
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; //创建查看器
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("glider.osg"); //读取模型文件,赋值给节点指针
viewer->setSceneData(node.get()); //查看器中添加该节点
return viewer->run(); //运行查看器
}
- 运行,会出现一个全屏的滑翔机。按
Esc可以退出。













网友评论