热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

osgEarth+VS2015开发环境搭建

前言osgEarth是基于OpenSceneGraph(OSG)实现的3DGIS引擎,而OSG是一个开源的三维实时场景图形开发框架。学习

前言

osgEarth是基于OpenSceneGraph(OSG)实现的3DGIS引擎,而OSG是一个开源的三维实时场景图形开发框架。学习osgEarth之前最好先学习下OSG,这是OSG官网有很多学习资料可以参考。osgEarth同时支持2D、3D地图,主要应用于军事仿真、教育、城市规划和管理、智能运维等领域。点击这里进入osgEarth官网。本文主要记录了在win10环境下编译osg和osgEarth的过程,我们通过运行框架自带的示例程序,结合源码能快速掌握osgEarth。


目录

      • 前言
      • 1、准备工作
      • 2、编译 OSG
      • 3、编译osgEarth
      • 4、编译osgQt


1、准备工作

我们准备使用cmake来编译OSG和osgEarth,如果之前没有安装过cmake,可以 从这里Cmake官网下载Cmake进行安装。
osgEarth依赖OSG,而OSG又依赖一些三方库来实现一些功能,主要的三方库见下表


  • Curl
  • ffmpeg
  • freetype
  • GDAL
  • GIFLIB
  • Jpeg
  • LIBXML2
  • PNG
  • TIFF
  • ZLIB

对于上面列出的三方库,如果没有特殊的要求建议下载编译好的版本,毕竟我们的主要目的是学习osgEarth,如果把时间花在编译这些三方库上不太合适。
在这里可以下载编译好的三方库 三方库下载链接
有了三方库后接下来下载OSG源码和OSGEarth源码,OSG版本选择3.6.5,osgEarth选择2.10,点击下面的链接进行下载。


  • OSG源码下载地址
  • osgEarth源码下载地址

2、编译 OSG

在编译OSG之前,先把三方库的根目录添加到环境变量OSG_THIRD_PARTY,并把它加到PATH 变量中,这样cmake能自动找到OSG依赖的三方库。
打开cmake-gui,在where is the source code:输入框中填入 OSG源码的根目录,在where to build the bianaries:输入框中填入构建目录地址,cmake会将将生成的工程和编译之后的文件存放在这个目录下,这里在OSG源码根目录下新建了一个build,选择这个目录即可,如下图所示。
选择源码目录
默认情况下不开启多核编译,这里可以通过修改编译选项支持多核编译,能大大提高编译速度。如图在debug和release编译选项后面添加 /MP。
多核编译

配置好后,点击页面左下角的Configure按钮,在弹出页面中选择编译器VS 2015 ,平台选择x64,如下图 ,点Finish按钮等待完成。
选择编译器和平台
配置完成后点击 【Generate】按钮生成OSG源码的VS2015 工程,点击【Open Project】按钮打开生成的解决方案。如下图所示

Cmake  生成的解决方案
在解决方案上右键,弹出的菜单中选择【批生成】,弹出如下面页面,勾选其中的ALL_BUILD Debug和ALL_BUILD Release,这里只编译选择的这两个工程就行,然后点击生成按钮,开始编译。
选择要编译的工程
漫长的编译过程结束后,接下来测试下编译是否成功。
首先下载OSG提供的测试数据,OSG测试数据下载地址,下载完成后将data的根目录添加到path环境变量中,我们通过使用osgviewer.exe打开一个模型,来验证编译是否成功。打开VS2015命令行,cd 到 osg源码的build/bin 目录下,输入命令:osgviewer.exe cow.osg, 能看到如下图所示的页面说明osg编译成功。
osg测试


3、编译osgEarth

将编译好的OSG库文件所在的根目录build,添加到环境变量OSG_ROOT中,然后打开cmake,设置osgEarth的源码根目录和build目录,修改编译选项支持多核编译,r然后点击【Configure】按钮,接着点击【Generate】按钮生成工程,点击【Open Project】打开项目
Cmake 配置
osgEarth项目文件
在解决方案上右键,弹出的菜单中选择【批生成】,弹出如下面页面,勾选其中的ALL_BUILD Debug和ALL_BUILD Release,这里只编译选择的这两个工程就行,然后点击生成按钮,开始编译。
批量生成
等待编译结束后,利用osgearth_viewer.exe 来测试下编译结果。osgEarth源码目录下有个test,这个目录中有很多测试文件,选择其中的gdal_interp.earth作为测试文件。打开VS2015 命令行工具,cd到osgEarth的build/bin目录下,执行命令:osgearth_viewer.exe C:\develop\osg\osgearth-2.10\tests\gdal_multiple_files.earth,能看到下图所示的地球页面,说明编译成功了。我们用同样的方式来运行osgEarth的各个示例,了解osgEarth能做什么。

osgEarth地球


4、编译osgQt

OSG的UI库还比较弱,我们一般使用Qt来开发跨平台的UI界面,osgQt 这个三方库实现了Qt与OSG的集成,使用osgQt结合Qt框架能很容易的搭建一个基于Qt的osg开发环境。首先下载osgQt源码,下载地址,编译osgQt也是使用cmake,与上面编译osgEarth的过程相似。goodLuck!!

以上就是本篇的所有内容了,如有疑问欢迎评论区留言!!!


推荐阅读
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • Android开发常见问题汇总(含Gradle解决方案)第二篇
    本文继续深入探讨Android开发中常见的问题及其解决方案,特别聚焦于Gradle相关的挑战。通过详细分析和实例演示,帮助开发者高效解决构建过程中的各种难题,提升开发效率和项目稳定性。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 在VS2013中编译FFMPEG时遇到的问题及解决方案
    在使用VS2013编译旧版本FFMPEG库时遇到了一些问题,因为官方并未提供预编译的LIB和DLL文件。由于对Linux环境不熟悉,只能在Windows环境下进行配置和编译。具体步骤如下:首先,下载FFMPEG的源代码;然后,安装必要的编译工具和依赖项;接着,配置Visual Studio 2013的项目设置;最后,解决编译过程中出现的各种错误和警告。通过这些步骤,最终成功编译出所需的FFMPEG库文件。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
author-avatar
拍友2602909025
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有