OsgEarth开发笔记(四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建

本文主要是介绍OsgEarth开发笔记(四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/122105565
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

OSG、OSGEARTH三维开发专栏

上一篇:《OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下)》
下一篇:敬请期待…


前言

  本篇非常麻烦,博主用QtCreator作为IDE,因为Osg3.6.3放弃对osgQt的支持,集成起来比较繁琐。


前提

  基于前面三篇的基础上,才可以进行本篇。


Demo演示:Qt5.15.2+OSG3.6.3+OsgEarth3.1的QtCreator下的msvc2019x64版本

  请添加图片描述

Demo运行程序下载

  QQ群:1047134658(点击“文件”搜索“osgEarth v1.0.0”,群内与博文同步更新)


OsgQt下载

  OsgQt地址:https://github.com/openscenegraph/osgQt
  QQ群:1047134658(点击“文件”搜索“osgQt”,群内与博文同步更新)


osgQt编译

步骤一:下载解压

  在这里插入图片描述

步骤二:CMake配置

  在这里插入图片描述

步骤三:CMake配置添加osg环境

  在这里插入图片描述

步骤四:CMake配置添加Qt环境  

  在这里插入图片描述

步骤五:CMake修改CMakeLists文件内容:

  在这里插入图片描述
  还是出现错误:
  在这里插入图片描述
  检查,并未发现错误
  在这里插入图片描述
  继续深入在这里插入图片描述    有一个路径填错了:  在这里插入图片描述
  过了,继续配置:
  在这里插入图片描述

  
  填入其他Qt路径:
  在这里插入图片描述
  在这里插入图片描述

步骤六:配置通过

  在这里插入图片描述

步骤七:生成成功

  在这里插入图片描述

步骤八:打开工程,进行编译

  在这里插入图片描述
  编译各种问,尝试过多次后放弃,看其他博客是可以的。
  在这里插入图片描述
  (后面的复杂,博主直接修改源码开始移植过去,直接加入工程方式,过程比较艰难,如果能编译好osgQt是最好的,改源码问题较多,需要的可联系博主获取,但是不免费,尊重劳动成果,禁止白嫖)


模块化

  在这里插入图片描述


配置文件

OsgEarthWidget.pri

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWDQT += openglFORMS += \$$PWD/OsgWidget.uiHEADERS += \$$PWD/OsgViewerWidget.h \$$PWD/OsgWidget.h \$$PWD/define.h \$$PWD/osgQt/include/osgQOpenGL/Export.hSOURCES += \$$PWD/OsgViewerWidget.cpp \$$PWD/OsgWidget.cpp \$$PWD/define.cpp# osg
INCLUDEPATH += $$PWD/osg3.6.3-vs2019/include
DEPENDPATH += $$PWD/osg3.6.3-vs2019/includeLIBS += -L$$PWD/osg3.6.3-vs2019/lib
LIBS += -lOpenThreads \-losg \-losgAnimation \-losgDB \-losgFX \-losgGA \-losgManipulator \-losgParticle \-losgPresentation \-losgShadow \-losgText \-losgUI \-losgUtil \-losgViewer \-losgVolume \-losgWidget \
#        -losgQt \-losgSim \-losgTerrain# osgQt
INCLUDEPATH += $$PWD/osgQt/include
DEPENDPATH += $$PWD/osgQt/includeHEADERS += \$$PWD/osgQt/include/osgQOpenGL/CullVisitorEx \$$PWD/osgQt/include/osgQOpenGL/GraphicsWindowEx \$$PWD/osgQt/include/osgQOpenGL/OSGRenderer \$$PWD/osgQt/include/osgQOpenGL/RenderStageEx \$$PWD/osgQt/include/osgQOpenGL/StateEx \$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWidget \$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWindowSOURCES += \$$PWD/osgQt/include/osgQOpenGL/CullVisitorEx.cpp \$$PWD/osgQt/include/osgQOpenGL/GraphicsWindowEx.cpp \$$PWD/osgQt/include/osgQOpenGL/OSGRenderer.cpp \$$PWD/osgQt/include/osgQOpenGL/RenderStageEx.cpp \$$PWD/osgQt/include/osgQOpenGL/StateEx.cpp \$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWidget.cpp \$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWindow.cpp# osgEarth
INCLUDEPATH += $$PWD/osgearth3.1-vs2019/includeLIBS += -L$$PWD/osgearth3.1-vs2019/lib
LIBS += -losgEarth

Demo源码

osg::ref_ptr<osg::Node> OsgWidget::getEarthSphiere()
{osg::ref_ptr<osg::Group> pGroup = new osg::Group;osgEarth::initialize();const char* styles_css =R"(p {altitude-clamping: terrain-drape;render-backface-culling: false;}p1: p{ fill: #ff3f3f9f; }p2: p{ fill: #3fff3f9f; }p3: p{ fill: #3f3fff9f; }p4: p{ fill: #ff3fff9f; }p5: p{ fill: #ffff3f9f; })";const char* script_source =R"(function getStyleClass(){// Exclude any countries beginning with the letter A:if ( feature.properties.name.charAt(0) === 'A' )return null;// If it starts with the letter C, return an inline style:if ( feature.properties.name.charAt(0) == 'C' )return '{ _fill: #ffc838; stroke: #8f8838; extrusion-height: 250000; }';// Otherwise, return a named style based on some calculations:var pop = parseFloat(feature.properties.pop);if      ( pop <= 14045470 )  return "p1";else if ( pop <= 43410900 )  return "p2";else if ( pop <= 97228750 )  return "p3";else if ( pop <= 258833000 ) return "p4";else                         return "p5";})";osg::ref_ptr<Map> map = new Map();GDALImageLayer* basemap = new GDALImageLayer();basemap->setURL("world.tif");map->addLayer(basemap);// Next we add a layer to provide the feature data.OGRFeatureSource* features = new OGRFeatureSource();features->setName("vector-data");features->setURL("world.shp");map->addLayer(features);Style style;LineSymbol* ls = style.getOrCreateSymbol<LineSymbol>();ls->stroke()->color() = Color::Yellow;ls->stroke()->width() = 2.0f;ls->tessellationSize()->set(100, Units::KILOMETERS);FeatureModelLayer* layer = new FeatureModelLayer();layer->setFeatureSource(features);StyleSheet* styleSheet = new StyleSheet();styleSheet->addStyle(style);layer->setStyleSheet(styleSheet);map->addLayer(layer);LayerVector layers;map->getLayers(layers);for (LayerVector::const_iterator i = layers.begin(); i != layers.end(); ++i){Layer* layer = i->get();if (layer->getStatus().isError() &&layer->getEnabled()){OE_WARN << layer->getName() << " : " << layer->getStatus().toString() << std::endl;}}MapNode* mapNode = new MapNode(map.get());_pViewer->setCameraManipulator(new EarthManipulator());pGroup->addChild(mapNode);return pGroup.get();
}

工程模板

  osgEarthDemo_工程模板_v1.0.0_搭建好Qt+OSG+EARTH环境显示地球_QtCreaotr下的msvc2019x64版本.rar


上一篇:《OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下)》
下一篇:敬请期待…


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/122105565

这篇关于OsgEarth开发笔记(四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/370393

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改