【QT + OsgEarth】(二)-- OsgEarth + osgQOpenGLWidget 加载地球

这篇具有很好参考价值的文章主要介绍了【QT + OsgEarth】(二)-- OsgEarth + osgQOpenGLWidget 加载地球。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译环境

osg: 3.6.5
osgEarth: 3.2.0
MSVC2019
osg 和 osgearth 的库文件配置参考这篇文章

编译生成osgQOpenGLWidget

修改CMakeLists 文件

  1. 添加qt版本和编译器目录
    osgqopenglwidget,QT,qt,ui,开发语言
SET(DESIRED_QT_VERSION "5.15.2" CACHE STRING "")
SET(CMAKE_PREFIX_PATH "D:/Solfware/Qt/5.15.2/msvc2019_64" CACHE PATH "")

2.修改osg版本
与安装的osg版本一致osgqopenglwidget,QT,qt,ui,开发语言
其余内容按照这个文章内容进行即可

将osgEarth嵌入Qt

头文件


#include <osgQOpenGL/osgQOpenGLWidget>
#include <osgEarth/EarthManipulator>
#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgViewer/View>

#include <osgGA/StateSetManipulator>
#include <osgGA/TrackballManipulator>
#include <osgGA/GUIEventHandler>
#include <osgGA/NodeTrackerManipulator>
#include <osgGA/FirstPersonManipulator>
#include <osgGA/KeySwitchMatrixManipulator>

#include <osg/GraphicsContext>
#include <osg/Math>
#include <osg/BlendFunc>
#include <osg/BlendColor>

#include <osgEarth/ElevationQuery>
#include <osgEarth/Config>
#include <osgEarth/GeoTransform>
#include <osgEarth/MapNode>
#include <osgEarth/Terrain>

#include <osgDB/ReadFile>
#include <osgUtil/LineSegmentIntersector>
#include <osgUtil/Optimizer>
#include <osgUtil/IntersectVisitor>

using namespace osgEarth::Util;
using namespace osgEarth;
using namespace osgGA;

DigtalEarth.h

class DigtalEarth : public QMainWindow
{
    Q_OBJECT

public:
    DigtalEarth(QWidget *parent = nullptr);
    ~DigtalEarth();

private slots:
    void initOsg();

private:
    Ui::DigtalEarth *ui;

    osgQOpenGLWidget *pOsgW;
    osgViewer::Viewer *mViewer;         //场景
    osg::ref_ptr<osg::Group> mRoot;     // 根节点
    osg::ref_ptr<osg::Node> mEarth;					//地球节点
    osg::ref_ptr<osgEarth::Util::EarthManipulator>	mCamera;	//相机操作器
};
DigtalEarth::DigtalEarth(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::DigtalEarth)
{
    ui->setupUi(this);
    resize(400, 300);
    pOsgW = new osgQOpenGLWidget(this);
    ui->gridLayout_2->addWidget(pOsgW);
    mRoot = new osg::Group;
    mCamera = new osgEarth::Util::EarthManipulator;
    mEarth = osgDB::readNodeFile("simple.earth");
    mRoot->addChild(mEarth.get());
    connect(pOsgW, SIGNAL(initialized()), this, SLOT(initOsg()));
}

DigtalEarth::~DigtalEarth()
{
    delete ui;
}
void DigtalEarth::initOsg()
{
    osgEarth::initialize();
    mViewer = pOsgW->getOsgViewer();
    mViewer->setCameraManipulator(new osgGA::TrackballManipulator());
    mViewer->setCameraManipulator(mCamera);
    mViewer->setSceneData(mRoot.get());
}

osgqopenglwidget,QT,qt,ui,开发语言文章来源地址https://www.toymoban.com/news/detail-520316.html

到了这里,关于【QT + OsgEarth】(二)-- OsgEarth + osgQOpenGLWidget 加载地球的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Qt 中动态加载窗口(C++)

    Qt 中动态加载窗口(C++)

    在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将 **.ui 添加到资源文件,通过 QUiLoader 加载。 现将两种方法介绍如下。 在 Qt 中创建 Qt 设计师界面类 一: 1)在函数中实例化窗体

    2024年02月11日
    浏览(7)
  • qt加载obj格式的3D模型

    在 Qt 中加载 obj 格式的 3D 模型可以使用 Qt 3D 模块。 首先,你需要在你的工程文件中包含 Qt 3D 模块,方法是在工程文件的顶部添加以下行: 然后,在你的代码中包含 Qt 3D 的头文件: 接下来,你可以使用 Qt3DRender::QObjLoader 类来加载 obj 格式的 3D 模型。首先,创建一个 Qt3DRen

    2024年02月16日
    浏览(11)
  • 解决QT使用QWebEngineView加载不出网页问题和实现qt与html网页基础通信

    解决QT使用QWebEngineView加载不出网页问题和实现qt与html网页基础通信

            这次项目需要用到qt去调高德地图进行显示,查阅资料后知道了qt可以用QWebEngineView类打开html文件并进行显示但是途中遇到了地图加载不出来的问题。但将源代码发给其他人之后,发现别人可以打开,但时间略长大概需要十秒左右,怀疑是QT版本问题,我现在用的版

    2024年03月18日
    浏览(14)
  • QT5 通过 webview2 加载网页

    QT5 通过 webview2 加载网页

    官方文档参考:https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/win32 头文件主要为:WebView2和WixLibrary,存储在include/external 库主要为:WebView2LoaderStatic.lib和WebView2Loader.dll,存储在lib/external CMakeLists文件 base/set_env.cmake init_project.cmake base/set_compile_arg.cmake main函数 MainWindow函数

    2024年02月07日
    浏览(12)
  • Qt-setIcon无法加载图片为图标

    当使用 添加Qt资源 来添加一个图片为图标时,按照以下流程: 1、右键点击.pro工程,选择在“Explorer中显示”, 将包含图片的文件夹放在该路径下; 2、右键单击工程项目,点击Add new 3、依次选择Qt→Qt Resource File→名称:res(自己起个名字)→下一步→完成,就会生成一个名

    2024年01月19日
    浏览(7)
  • QT 链接动态库 (静态链接 条件编译 动态加载)

    本篇文章以我实际使用过程为例,在此总结一下qt链接动态库的几种方式 使用的动态库为libzint.so,库目录为/usr/local/lib 第一种为直接将库添加到QT中,可以看成静态库 通过pro文件添加链接 在用到外部库的程序代码中直接 这样就可以直接调用外部库的中结构体与函数接口 可以

    2024年01月20日
    浏览(10)
  • Qt|使用QWebEngineView控件加载HTML使用及问题

    Qt|使用QWebEngineView控件加载HTML使用及问题

    前一段时间项目中用到了加载html的功能,也遇到了一些比较奇奇怪怪的问题。 我的开发版本以及环境:VS2017 + Qt5.14.2 遇到的问题如下: 1:加载自己写的本地的html页面时,为什么第一次会很慢? 2:在一些电脑上加载html时,为什么会出现黑屏现象? 针对上述两个问题,开展

    2024年02月05日
    浏览(9)
  • QT加载echarts图表并进行数据交互详细过程

    QT加载echarts图表并进行数据交互详细过程

    最近做一个数据可视化大屏的项目,其中用到echarts图表来动态展示数据,并且进行数据交互。由于之前没接触过,看了很多文章,也走了很多弯路,终于学会了,下面记录一下自己的学习过程,亲测完全可用。 效果:本来想放个视频,但是现在文章里面好像不能加视频,找

    2024年02月06日
    浏览(10)
  • Qt/C++使用QUiLoader动态加载ui资源文件

    Qt/C++使用QUiLoader动态加载ui资源文件

    动态对话框(dynamic dialog)就是在程序运行时使用的从Qt设计师的.ui文件创建而来的那些对话框。动态对话框不需要通过uic把 .ui文件转换成C++代码,相反,它是在程序运行的时候使.用QUiLoader 类载人该文件的。 动态对话框使不重新编译应用程序而可以改变窗体布局的做法成为可能。

    2024年02月21日
    浏览(8)
  • 基于QT使用OpenGL,加载obj模型,进行鼠标交互

    基于QT使用OpenGL,加载obj模型,进行鼠标交互

    基于QT平台,使用OpenGL进行obj文件加载显示; 使用鼠标对场景进行缩放、移动、旋转交互;   OpenGL是基于C的,学习曲线比较抖,但是总的来说就是下面一幅图,   用语言简单的描述(个人理解,可能不太准确)是把 cpu里内存里的3D数据,传输到显卡的内存里,以及如何

    2024年02月04日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包