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

OSG + osgQt 编译

准备以上文件,

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都可以不要。

OSG VS 使用

#include "stdafx.h"
#include <iostream>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

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,可能是文件版本问题。

全屏牛。

全屏牛

OSG Qt 使用

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也是同样,以后研究透了再解决。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐