Windows10
Qt5.14.2
Microsoft Visual Studio2017
cmake-3.20.4-windows-x86_64.msi
osg官网
github
OSG源码(OpenSceneGraph)
下载网址
也可使用git下载:
git clone --branch OpenSceneGraph-3.6.5 https://github.com/openscenegraph/OpenSceneGraph.git
依赖库(3rdParty)
下载地址
这里选择已经编译好的VisualStudio 2017版本库
数据资源(OpenSceneGraph-Data)
下载地址
这里选择最新版OpenSceneGraph-Data-3.4.0.zip
打开Cmake,将OpenSceneGraph文件夹下的CMakeLists.txt文件拖进Cmake中,创建build文件夹并在Cmake中指定路径;
点击configure,选择vs2017、x64(由于下载的依赖库为64位,所以这里如果要编译32位的只能自己编译依赖库),注意如果是安装了多个版本vs,需要选择Specify native compilers,我这里只安装了一个版本;
指定依赖库路径ACTUAL_3RDPARTY_DIR
勾选BUILD_OSG_EXAMPLES(可选择不勾选)
修改安装路径CMAKE_INSTALL_PREFIX
点击configure直到没有红色,然后点击Generate,等待生成VS解决方案,生成完成后点击Open Project打开VS
打开解决方案后,选择Debug、x64
右键ALL_BUILD,点击生成,等待两小时就可以编译完成,然后选择Release再编译一次
右键INSTALL,点击生成就可以在之前指定的安装路径下(CMAKE_INSTALL_PREFIX)生成编译好的文件了
将依赖库和数据资源文件拷到编译后的文件路径处
打开系统环境变量
添加如下环境变量,注意路径换成自己的,然后保存,重启电脑使环境变量生效
可测试命令
osgversion
osglogo
osgviewer
打开cmd
输入:osgversion
输入:osglogo
输入:osgviewer D:\OSG\OpenSceneGraph-Data\cow.osg
新建一个Qt工程,选择编译器位MSVC2017-x64(需要配置)
打开.pro文件,添加下列代码(路径换成自己的)
INCLUDEPATH += D:/OSG/install/include DEPENDPATH += D:/OSG/install/include win32:CONFIG(release, debug|release): LIBS += -LD:/OSG/install/lib/ -losg else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OSG/install/lib/ -losgd win32:CONFIG(release, debug|release): LIBS += -LD:/OSG/install/lib/ -losgViewer else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OSG/install/lib/ -losgViewerd win32:CONFIG(release, debug|release): LIBS += -LD:/OSG/install/lib/ -losgDB else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OSG/install/lib/ -losgDBd
或者右键工程,选择添加库
选择需要添加的库,然后点击确认即可
添加下列代码
#include "widget.h" #include <osgViewer/Viewer> #include <osgDB/ReadFile> int main(int argc, char *argv[]) { QString osgPath = "D:/OSG/OpenSceneGraph-Data/avatar.osg"; // 换成自己的路径 osgViewer::Viewer viewer; // 创建查看器 osg::Node * node = new osg::Node; node = osgDB::readNodeFile(osgPath.toStdString()); // 读取模型文件,赋值给节点指针 viewer.setSceneData(node); // 查看器中添加该节点 return viewer.run(); // 运行查看器 }
编译运行结果如下
链接:https://pan.baidu.com/s/1UfNbJ0fUAzKfe3XrWNVTDA
提取码:66tf