OSG + osgQt 编译及使用,本文分三部分:OSG + osgQt 编译;OSG VS 使用;OSG Qt 使用。
参考以下文章:
OpenSceneGraph环境搭建 - bjut13070010张骁 - 博客园
https://www.cnblogs.com/ACskyline/p/5244340.html
Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)_人生海海 山山而川-CSDN博客
https://blog.csdn.net/charlee44/article/details/86761461
Windows7 + OSG3.6 + VS2017 + Qt5.11 - 大蓝鲸 - 博客园
https://www.cnblogs.com/dalanjing/p/10639047.html
osgqt编译_zmy12007的专栏-CSDN博客
https://blog.csdn.net/zmy12007/article/details/80287618
osgQOpenGL的简单使用——在一个窗口中显示三维模型_GeomasterYi的博客-CSDN博客
https://blog.csdn.net/GeomasterYi/article/details/107132140
准备以上文件,
GitHub - bjornblissing/osg-3rdparty-cmake: CMake scripts for building OpenSceneGraph third party libraries.
https://github.com/bjornblissing/osg-3rdparty-cmake
Stable releases
http://www.openscenegraph.org/index.php/download-section/stable-releases
Data Resources
http://www.openscenegraph.org/index.php/download-section/data
GitHub - mathieu/osgQt
https://github.com/mathieu/osgQt
GitHub - openscenegraph/osgQt
https://github.com/openscenegraph/osgQt
以上有两个osgQt版本,第一个生成osgQt.dll,第二个是osg156-osgQOpenGL.dll,osgQOpenGL似乎更新,本文使用osgQOpenGL版本。
以下给出两个osgQt版本编译和使用该版本的教程,本文未尝试。
单独编译osgQt模块 Qt moc - 酷熊 - 博客园
https://www.cnblogs.com/coolbear/p/4434778.html
OSG中使用Qt做界面_xpg4321的博客-CSDN博客_osg qt
https://blog.csdn.net/xpg4321/article/details/72867596
执行osg-3rdparty-cmake-master下download_dependencies.bat,文件自动存放到c:/3rdparty,libjpeg、curl因为需要“7z”解压命令,会提示失败,手动下载解压,然后全部移动到C:\OSG\3rdparty-src
首先CMake编译依赖库,如下图配置
configure后弹出下图窗口,需选成x64,否则默认Win32
generate后open project,先是批生成ALL_BUILD,成功后再批生成INSTALL,需注意取消ALL_BUILD的勾选。
因为我是INSTALL到C盘,权限不够,出现类似下图错误(OSG、osgQt都是如此)
以管理员打开VS,然后"最近使用的项目"打开OpenscenegraphThirdParty.sln,再次INSTALL,3rdParty下bin、include、lib成功生成
至此,依赖库的编译完成,把3rdParty复制或移动到C:\OSG。
接下来编译OSG,如下配置
注意如果不指定安装目录,默认到C:\Program Files,可以不管,生成成功后复制或移动到其它不含空格的目录,因为Qt pro不支持含空格路径。
这里举几个依赖库的配置方式,其它依赖库类似。
然后generate、open project,和依赖库同样方式,都是先批生成ALL_BUILD,成功后再批生成INSTALL,ALL_BUILD从开始到结束在虚拟机上差不多需要5个小时。
有的教程提到下图红框处还应有osgQt项目,新版本没有是正常的。
由于我在BUILD勾选了plugins,这里出现了osgdb_tiff plugin的错误,暂时找不到原因,只能项目右键“卸载项目”,不生成osgdb_tiff.dll 。
然后把C:\Program Files\OpenSceneGraph移动到C:\OSG,这里有个地方要注意,INSTALL不会把build目录bin下的exe复制到C:\Program Files\OpenSceneGraph,还需手动复制build目录bin所有文件到C:\OSG\OpenSceneGraph\bin。
配置环境变量path、OSG_FILE_PATH,cmd osgversion
至此,OSG编译完成,最后是osgQt的编译。
修改osgQt-master\CMakeLists.txt两处
set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.7.1\\5.7\\msvc2013_64" CACHE PATH "")
FIND_PACKAGE(OpenSceneGraph 3.6.0 REQUIRED osgDB osgGA osgUtil osgText osgViewer osgWidget)
SET(OPENSCENEGRAPH_SOVERSION 156)
OSG相关如下配置
因为CMakeLists.txt指定了Qt目录,Qt的DIR自动找到了,如没有自动找到,可在配置好OSG相关后再次或多次configure,会自动找到的。
因未配置CMAKE_INSTALL_PREFIX,编译完成后默认安装到C:/Program Files/osgQt,复制C:/Program Files/osgQt到C:/OSG/osgQt,需把build\bin下的exe复制到C:/OSG/osgQt/bin,然后把C:/OSG/osgQt下的全部文件夹复制合并到C:\OSG\OpenSceneGraph。
至此,全部编译工作完成。
以上三个build目录删除,占了大量空间,其他目录除OpenSceneGraph都可以不要。
#include "stdafx.h"
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}
VS新建控制台程序,项目属性配置包含目录、库目录、附加库目录、附加依赖项
OpenThreads.lib
osg.lib
osgDB.lib
osgUtil.lib
osgGA.lib
osgViewer.lib
osgText.lib
提示zlib错误,复制C:\OSG\3rdParty\v120-x64\bin\zlib.dll到C:\OSG\OpenSceneGraph\bin
有的模型提示如下错误,如example.osg,可能是文件版本问题。
全屏牛。
pro如下配置
# osg 安装目录
OSG_INSTALL_PATH = C:/OSG/OpenSceneGraph/
# osg 相关库
LIBS += -L$$OSG_INSTALL_PATH/lib -losg -losgDB -losgViewer -losgGA -losgUtil -lOpenThreads -losgQOpenGL
# osg 相关头文件目录
INCLUDEPATH += $$OSG_INSTALL_PATH/include
依然全屏牛。
这里出现一个warning,VS也是同样,以后研究透了再解决。