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

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

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

前言

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

前提

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

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

Demo运行程序下载

?即时通信软件群:1047134658(点击"文件"搜索“osgEarth v1.0.0”,群内与博文同步更新)

OsgQt下载

?OsgQt地址:https://github。com/openscenegraph/osgQt

?即时通信软件群:1047134658(点击"文件"搜索“osgQt”,群内与博文同步更新)

osgQt编译

步骤一:下载解压

步骤二:CMake配置

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

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

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

?还是出现错误:

?检查,并未发现错误

?继续深入?有一个路径填错了:

?过了,继续配置:

?填入其他夸脱路径:

步骤六:配置通过

步骤七:生成成功

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

?编译各种问,尝试过多次后放弃,看其他博客是可以的。

?(后面的复杂,博主直接修改源码开始移植过去,直接加入工程方式,过程比较艰难,如果能编译好osgQt是最好的,改源码问题较多,需要的可联系博主获取,但是不免费,尊重劳动成果,禁止白嫖)

模块化

配置文件

OsgEarthWidget.pri

INCLUDEPATH=$$PWD

DEPENDPATH=$$PWD

QT=opengl

FORMS=\

$$PWD/OsgWidget.ui

HEADERS=\

$$PWD/OsgViewerWidget.h \

$$PWD/OsgWidget.h \

$$PWD/define.h \

$ $ PWD/开放源码软件/包括/开放源码软件/出口

SOURCES=\

$$PWD/OsgViewerWidget.cpp \

$$PWD/OsgWidget.cpp \

$ $ PWD/定义。卡片打印处理机(Card Print Processor的缩写)

# osg

包含路径=$ $ PWD/操作系统g 3。6 .3-vs 2019/包括

DEPENDPATH=$ $ PWD/OS g 3。6 .3-vs 2019/包括

LIBS=-L $ $ PWD/OSG 3。6 .3-vs 2019/lib

LIBS=-洛佩兹

losg

-组织信息\

-losgDB \

-losgFX \

-losgGA \

-losgmanipolator \

-losgParticle \

-losgppresentation \

-丢失全歼\

-losgText \

-losgUI \

-losgUtil \

-日志查看器\

-LogVolume \

-losgWidget \

# -losgQt \

-losgSim \

-losgTerrain

# osgQt

包含路径=$ $ PWD/osgQt/include

DEPENDPATH=$$PWD/osgQt/include

HEADERS=\

$ $ PWD/osgQt/include/osgqobngl/culvisitorex \

$ $ PWD/osgQt/include/osgqobingl/Gr

aphicsWindowEx \
$$PWD/osgQt/include/osgQOpenGL/OSGRenderer \
$$PWD/osgQt/include/osgQOpenGL/RenderStageEx \
$$PWD/osgQt/include/osgQOpenGL/StateEx \
$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWidget \
$$PWD/osgQt/include/osgQOpenGL/osgQOpenGLWindow
SOURCES += \
$$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/include
LIBS += -L$$PWD/osgearth3.1-vs2019/lib
LIBS += -losgEarth

Demo源码

osg::ref_ptrosg::Node OsgWidget::getEarthSphiere()
{
    osg::ref_ptrosg::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_ptrMap 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.getOrCreateSymbolLineSymbol();
    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

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157187.html

(0)

相关推荐

  • 分析数据库都做了哪些操作

    技术分析数据库都做了哪些操作这篇文章主要介绍“分析数据库都做了哪些操作”,在日常操作中,相信很多人在分析数据库都做了哪些操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析数据库都做了哪

    攻略 2021年11月4日
  • 鳄鱼属于哺乳动物吗,哺乳动物一定是胎生的吗

    技术鳄鱼属于哺乳动物吗,哺乳动物一定是胎生的吗否鳄鱼属于哺乳动物吗。1.现代观点认为,哺乳动物不是由爬行动物进化来的,哺乳动物祖先和现代爬行动物以及鸟类的祖先是两条单独的进化路线。哺乳动物祖先属于广义上的爬行动物,但这种

    生活 2021年10月23日
  • JavaScript如何改变元素属性

    技术JavaScript如何改变元素属性小编给大家分享一下JavaScript如何改变元素属性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年11月8日
  • 和田玉价格走势,和田玉价格是怎样涨起来的

    技术和田玉价格走势,和田玉价格是怎样涨起来的以下是鸿璐的一些浅见和田玉价格走势,希望对您有所帮助和田玉历史悠久,从古至今备受人们喜爱!和田玉润更是以其优秀的润度屹立于玉石行列的顶端!和田玉的“羊脂白玉”更是以其白中有润,

    生活 2021年10月22日
  • SCA命令行工具怎样快速构建FaaS服务

    技术SCA命令行工具怎样快速构建FaaS服务这期内容当中小编将会给大家带来有关SCA命令行工具怎样快速构建FaaS服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Serverless

    攻略 2021年11月24日
  • 刷抖音粉丝平台,抖音花钱刷粉丝价格多少?

    技术刷抖音粉丝平台,抖音花钱刷粉丝价格多少?抖音大家买真是粉丝或者买关注之类的大部分都是需要付费的,不过现在市面上这些业务平台的价格有高有低的。大家需要妥善地判断,如果有不太清楚不太了解的小伙伴,下面小编就给大家带来抖音

    测评 2021年11月11日