osgEarth初探

osgEarth是基于OpenSceneGraph (OSG)开发的三维地图SDK,......(此处省略500凑字数的内容)。

基础环境配置

为了避免繁琐的源码编译过程,使用vcpkg安装osgEarth,安装成功后,单独导出来。

  • 安装: vcpkg install osgEarth --keep-going
  • 导出:vcpkg export osgEarth:x64-windows --raw --output=osgEarth --output-dir=E:/

其中,--raw表示以文件夹形式导出,--output表示导出文件夹名称,--output-dir表示导出文件夹位置。

使用Microsoft Visual Stuido 2022建立一个控制台应用程序,在属性页中进行如下配置:

  1. 附加包含目录:E:/osgEarth/installed/x64-windows/include
  2. 附加库目录:E:/osgEarth/installed/x64-windows/debug/lib
  3. 附加依赖项:*.lib
  4. 调试环境:path=E:/osgEarth/installed/x64-windows/debug/bin

如果使用 vcpkg integrate install进行Visual Studio集成,则无需进行上述属性配置过程。

加载官网示例

在osgEarth源码中给出了一个基本的使用示例,如下所示:

cpp 复制代码
#include <osgEarth/MapNode>
#include <osgEarth/TMS>
#include <osgEarth/EarthManipulator>
#include <osgEarth/GLUtils>
#include <osg/ArgumentParser>
#include <osgViewer/Viewer>

int main(int argc, char** argv)
{
    osgEarth::initialize();
  
    osg::ArgumentParser args(&argc, argv);
    osgViewer::Viewer viewer(args);
    viewer.setRealizeOperation(new osgEarth::GL3RealizeOperation());
  
    auto imagery = new osgEarth::TMSImageLayer();
    imagery->setURL("https://readymap.org/readymap/tiles/1.0.0/7/");
  
    auto mapNode = new osgEarth::MapNode();
    mapNode->getMap()->addLayer(imagery);
  
    viewer.setSceneData(mapNode);
    viewer.setCameraManipulator(new osgEarth::EarthManipulator(args));
  
    return viewer.run();
}

上述示例代码正常运行后,会出现一个三维地球。

将示例代码拷贝到 main.cpp中。此时,编译项目会报出一大堆乱七八糟的错误,在第一行添加 #include<Windows.h>即可解决。再次编译,仍然出现了一些错误,在 #include<Windows.h>前添加 #define NOMINMAX即可解决。

运行程序,在控制台中可能会报出如下几个错误:

  1. Fontconfig error: Cannot load default config file: No such file: (null)
  2. Error reading file C:/Windows/fonts\verdana.ttf: file not handled
  3. osgEarth* FAILED to create a terrain engine for this map

对于错误1,参考FontConfig osg OsgEarth Fontconfig error: Cannot load default config file: No such file: (null) · Issue #25776 · microsoft/vcpkg将【.../installed/x64-windows/etc/】位置下的【fonts】文件夹直接拷贝到exe同级目录下问题解决。

对于错误2,该错误是在没有使用 vcpkg integrate install进行Visual Studio集成的情况下出现。根据osg OpenSceneGraph Could not find plugin to read objects from file "xxxx".) Error writing_error reading file simpleroom.osgt: read error (co-CSDN博客,灵机一动下,将【osgPlugin-3.6.5】配置到项目(配置到调试环境或将该文件夹拷贝到exe同级目录下 )中,问题解决。

对于错误3,该错误是在使用 vcpkg integrate install进行Visual Studio集成的情况下出现。与错误2解决办法相同。

上述错误处理完毕后,运行程序,出现想要的结果:

相关推荐
凡人叶枫11 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
坚果派·白晓明13 小时前
【鸿蒙PC】SDL3 移植:AtomCode Skills 4 步速通多媒体库适配
c++·华为·ai编程·harmonyos·atomcode·c/c++三方库
赴生-14 小时前
C++进阶 C++11(下)
开发语言·c++
有点。14 小时前
C++(贪心算法一)
c++·贪心算法
IT_陈寒14 小时前
Vite热更新失效?可能你在用Windows
前端·人工智能·后端
WBluuue14 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
赴生-14 小时前
C++进阶 异常
开发语言·c++
椰椰椰耶15 小时前
[SpringCloud][14]OpenFeign参数传递方法
后端·spring·spring cloud
onething36515 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 3 —— 消息表设计 + 级联删除 + 事务管理
人工智能·后端
荣江15 小时前
Hermes Agent 代码仓库打包工具使用指南(repomix-rs 高性能版)
后端