若该文为原创文章,转载请注明原文出处
本文章博客地址: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版本开发环境搭建相关推荐

  1. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们首先对Direct3D之中固定功能流水线中的 ...

  2. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩 纹理映射技术 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  3. 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处.   文章链接: http://blog.csdn.net/zhmxy555/article/details/8632184 作者:毛星云( ...

  4. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8523341 作者:毛星云(浅墨 ...

  5. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们对Direct3D之中固定功能流水线中的3D ...

  6. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界 光照与材质专场

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  7. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器 DirectInput专场

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  8. 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界 摄像机的实现

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 本系列文章由zhm ...

  9. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨) ...

  10. 【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8586540 作者:毛星云(浅墨 ...

最新文章

  1. Linux运维工程师发展前景
  2. 动态规划----解121. 买卖股票的最佳时机---最大连续子序列和
  3. 在web应用程序中使用MemcachedClient
  4. Navicat Premium 15连接虚拟机上mysql并创建数据库
  5. 《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
  6. 【Python实例第11讲】文本的核外分类
  7. 求你们不要再问我录屏软件了,这些电脑、手机录屏软件全给你们!
  8. Adams安装出错的一种情况
  9. 深入浅出、通俗易懂的讲解CAN bus。
  10. MySQL多表左右连接查询
  11. 全球最厉害的 14 位程序员,你认识几位?
  12. android der 编码,关于android:使用现有DER / PEM密钥的Javascript中的RSA加密
  13. docker学习(十三)docker安装dejavu
  14. 【- Flutter 桌面篇 -】 FlutterUnit mac版闪亮登场
  15. flex布局 justify-content 新属性值 space-evenly
  16. 推荐 7 个 yyds 的开源项目
  17. 联想第一季度业绩超预期,增长势头强劲
  18. python房价预测_python房价预测
  19. 第三方支付接口之微信扫码支付
  20. CIsco思科三层交换配置DHCP,客户端动态获取

热门文章

  1. springboot考试及其自动评卷系统(附源码、论文)免费赠送项目完整源码,可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、单片机、全套文案
  2. HDU 4811 Ball(超直白解释)
  3. 使用transform使定位元素居中
  4. 017:函数:Python的乐高积木
  5. python掷骰子while循环_初学者Python:骰子游戏,while循环实现
  6. uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)
  7. 那个在西雅图偷飞机的年轻人
  8. turtle支持的颜色单词
  9. java 项目导入到svn_Eclipse导入SVN项目的三种方式
  10. Apollo配置中心管理后台的详解