VS2019编译OSG3.7.0+OSGEarth3.3+OSGQt

原文链接:VS2019编译OSG3.7.0+OSGEarth3.3+OSGQt-CSDN博客

工具与环境

这里使用的 cmake-3.18.3 、 VS2019 和 Qt5.15.2 进行编译。

一、编译OSG3.7.0

1、下载

下载不多赘述,在github上下master版本就是3.7.0版本。
另外还需要 3rdParty_VS2017_v141_x64_V11_fullOpenSceneGraph-Data-3.4.0 可以在OSG英文官网中下载到。

2、cmake编译

将OSG3.7.0源码、3rdParty_VS2017_v141_x64_V11_full、OpenSceneGraph-Data-3.4.0解压到合适的目录,并新建一个文件夹用于保存cmake生成的项目。如下图,这里我放在了同级目录下。

然后打开cmake,在最上面第一栏选择OSG源码中CMakeLists文件所在文件夹的路径,第二栏选择上面自己新建的文件夹路径,然后点击Configure按钮,会弹出如下图子界面,第一栏选择VS2019,第二栏选择x64点击Finish按钮,cmake开始加载。

等待加载完成,会显示一片红,并在下面的log中显示一些库找不到。

点击Ungrouped Entries项展开,在第一项ACTUAL_3RDPARTY_DIR中选择3rdParty_VS2017_v141_x64_V11_full中的x64文件夹路径。

点击BUILD项展开,勾选BUILD_OSG_EXAMPLES项。
点击CMAKE项展开,将CMAKE_INSTALL_PREFIX项的路径修改为最上面创建的文件夹中的OpenSceneGraph文件夹(目录下没有这个文件夹没关系,INSTALL时会自动创建)。

点击OPENGL项展开,修改OPENGL_HEADER1项为
#include <GL/glcorearb.h>,修改OPENGL_PROFILE项为GL3。

注意: OSGEarth3.3版本必须要OSG支持GL3,所以需要下载另外的GL API文件。
下载地址:
https://github.com/KhronosGroup/OpenGL-Registry
https://github.com/KhronosGroup/EGL-Registry
将第一个的GL文件夹和第二个的KHR文件夹复制到OSG源码的include目录下。

点击OSG项展开,
勾选

OSG_GL3_AVAILABLE

取消勾选

OSG_GL1_AVAILABLE
OSG_GL2_AVAILABLE
OSG_GLES1_AVAILABLE
OSG_GLES2_AVAILABLE
OSG_GL_DISPLAYLISTS_AVAILABLE
OSG_GL_FIXED_FUNCTION_AVAILABLE
OSG_GL_MATRICES_AVAILABLE
OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE
OSG_GL_VERTEX_FUNCS_AVAILABLE

修改OSG_GL_CONTEXT_VERSION项为3.3。

然后一直点击Configure按钮直到没有红色项,从下面log可见部分库已经找到(如果没有其他要求,官网下的依赖包中的库应该就已经足够,不需要额外再下别的库了),然后点击Generate按钮,等进度条走完,下方log显示Generating done,即项目生成结束。

3、VS2019编译

打开生成的项目目录,点击sln文件打开项目,点击最上方功能栏生成-批生成,在弹出的子窗口中勾选ALL_BUILD的Debug和Release,然后点击生成按钮,下方输出中显示“已启动生成…”,项目开始编译。

**注意:**应该会出现报错,这是因为宏GL_EXT_texture_compression_s3tc已经在glcorearb.h中定义,需要注释掉osg/Texture文件中第60和69行。

接着等待编译完成,应该是不会有失败的。、

然后再次打开批生成,将ALL_BUILD的两个取消勾选,找到INSTALL勾选Debug和Release,点击生成按钮,等待完成。
再之后,打开之前CMAKE_INSTALL_PREFIX项中设置的目录,即是生成好了的库文件。注意:这个目录的include中是不带之前的GL和KHR文件夹的,记得手动复制过来。

4、测试

新建一个控制台项目(如何引入库头文件和库文件这里不再赘述),输入以下内容(glider.osg可以在OpenSceneGraph-Data-3.4.0中找到):

运行,如果出现一个紫色的滑翔机,应该就没什么问题了。

注意:因为开启了GL3,所以会对有些渲染不兼容,导致glider.osg和cow.osg的显示效果与通常的有所不同。

二、编译OSGEarth3.3

1、下载

下载不多赘述,在github上下master版本就是3.3版本。
不过要注意的是在src/third_party下三个蓝色链接的项目需要手动下载然后拷贝到此目录下。

必要的还有sqlite3,另外我这里还编译了glew。

1.1、编译sqlite3
1.1.1、下载

下载地址:https://sqlite.org/download.html
这里下载下图两个包,第二张图下载x64版本,下载解压完成后,将文件复制到同一个目录。

1.1.2、编译

打开VS2019,新建一个空项目,起名为sqlite3。

将下载的sqlite的所有文件复制到项目目录下。

然后右键项目,添加现有项。

右键项目属性,将常规中的配置类型设置为动态库(.dll),在目标文件名后加d(这个仅Debug设置),设置链接器-输入中模块定义文件为sqlite3.def,在C/C+±预处理器中预处理器定义中添加以下宏:

SQLITE_CORE
SQLITE_EXPORTS
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_SESSION
SQLITE_ENABLE_PREUPDATE_HOOK
SQLITE_ENABLE_DESERIALIZE

记得Debug和Release都要设置。然后点击生成-批生成,勾选Debug和Release,点击生成, 

 

等待编译完成。在生成目录下就可以看到生成的Debug和Release的lib和dll了。再记得创建一个include文件夹将.h文件复制进去。

1.2、glew

glew可以直接下载编译好了的文件,直接下载Binaries即可。
下载地址:http://glew.sourceforge.net/

解压后,将bin和lib中x64目录下glew.dll和glew32.lib复制出来(glew32s.lib是静态库,这里我们需要动态库,所以取glew32.lib即可),复制到一个新的文件夹,将include文件夹也复制进去。

2、cmake编译

开始部分与OSG编译一致,新建一个文件夹用于保存cmake生成的项目,cmake最上面第一栏选择OSGEarth源码中CMakeLists文件所在文件夹的路径,第二栏选择上面自己新建的文件夹路径,点击Configure按钮,然后选VS2019和x64,点击Finish按钮,等待加载。

载入完成后跟前面的有一点不同的是,应该会弹出Error提示窗,这里不用担心,查看log信息,大概率是有库找不到,手动输入一下就行,这里提示的是找不到curl库,这个库在OSG的3rdParty包中有,不需要额外去下。

上面还是一片红,顺着来处理。

点击CMAKE项展开,将CMAKE_INSTALL_PREFIX项的路径修改为创建的项目文件夹中的OSGEARTH文件夹(目录下没有这个文件夹没关系,INSTALL时会自动创建)。

点击CURL项展开,INCLUDE设置为OSG的3rdParty包中include目录,此目录下可见有curl文件夹,DEBUG和RELEASE设置为3rdParty包中lib目录下的libcurl_impd.lib和libcurl_imp.lib文件。

然后就是下面一系列有关OSG的依赖,只用点开OSG项,在第一个OSG_DIR中设置之前OSG的CMAKE_INSTALL_PREFIX项设置的路径,然后点击
Configure按钮,刷新完成应该会再次弹出Error提示窗,这次应该是找不到GDAL,依次点开OSG相关的项,应该就都自动找到了。

点击GDAL项展开,INCLUDE输入3rdParty的include目录,LIBRARY输入3rdParty的lib目录中的gdal_i.lib。

点击Configure按钮,应该不会弹出Error提示窗了,不过会新增一系列其他依赖库选项,请根据需要自行下载,这里只设置GLEW和SQLITE3。

点击GLEW项展开,设置INCLUDE为之前glew的include目录,SHARED_LIBRARY_DEBUG为glew32d.lib,SHARED_LIBRARY_RELEASE为glew32.lib。

点击SQLITE3项展开,设置INCLUDE为之前sqlite3的include目录(这里我没有新建单独的include文件夹,.h文件直接放在了根目录下),LIBRARY为sqlite3.lib。

点击OSGEARTH项展开,这里有几种NodeKit,可以根据需要勾选,勾选后可能会需要另外的第三方依赖(例如Triton和Silverlining),请自行下载,这里我就保持默认,然后仅勾选OSGEARTH_INSTALL_SHADERS项。

最后点击Generate按钮,等待项目生成完毕。

3、VS2019编译

跟之前的一样,点击生成-批生成,在弹出的子窗口中勾选ALL_BUILD的Debug和Release,然后点击生成按钮,等待生成完成,应该是不会有失败的。

然后再次打开批生成,将ALL_BUILD的两个取消勾选,找到INSTALL勾选Debug和Release,点击生成按钮,等待完成。
再之后,打开之前CMAKE_INSTALL_PREFIX项中设置的目录,即是生成好了的库文件。

4、测试

找个地方新建一个文件夹,将bin中的osgearth_viewer.exe复制进去,再将OSGEarth源码目录下的data文件夹中的world.tif复制进去,然后新建一个txt文件,后缀改为.earth,内容写:

<map>
<GDALImage name="test"><url>world.tif</url>
</GDALImage>
</map>

然后将OpenSceneGraph和OSGEARTH的bin目录下的所有dll以及osgPlugins文件夹复制到此目录,将3rdParty的bin目录下的所有dll复制到此目录,将sqlite3.dll也复制到此目录(其实这里应该区分一下Debug和Release的dll,将需要的复制进去,不过是测试就不考虑这么多,如果要用于实际项目,建议还是要做下区分)。
接着运行cmd,用cd命令切换到此目录下,然后输入osgearth_viewer test.earth,按下回车。

如果出现了一个粗糙的地球,应该就没什么问题了。

三、编译OSGQt

1、下载

下载不多赘述,在github上直接下的master版本。

2、cmake编译

前面的和之前一样,新建一个文件夹用于保存cmake生成的项目,cmake最上面第一栏选择OSGQt源码中CMakeLists文件所在文件夹的路径,第二栏选择上面自己新建的文件夹路径,点击Configure按钮,然后选VS2019和x64,点击Finish按钮,等待加载。
然后会弹出Error提示窗,查看下面log是找不到OSG相关的库,这里要麻烦一点,需要一个个的手动填写。

然后点击Configure按钮,会弹出Error提示窗,查看下面log是找不到Qt相关的库。
点击Ungrouped Entries项展开,设置Qt5_DIR为:

点击CMAKE项展开,将CMAKE_INSTALL_PREFIX项的路径修改为创建的项目文件夹中的OSGQt文件夹(目录下没有这个文件夹没关系,INSTALL时会自动创建)。

点击Configure按钮,应该是没有报错了,log中有一些红色的Warning文本,这个可以不用管,然后点击Generate按钮,等待项目生成完毕。

3、VS2019编译

打开项目,注意: 双击打开Header Files中的osgQOpenGLWidget和osgQOpenGLWindow,将第15行 #define _gl_h 的注释解开,因为默认下会导致启用系统的gl.h文件,并与之前下载的glcorearb.h文件产生冲突,出现接口重定义的问题。

接着跟之前的一样,点击生成-批生成,在弹出的子窗口中勾选ALL_BUILD的Debug和Release,然后点击生成按钮,等待生成完成,应该是不会有失败的。

然后再次打开批生成,将ALL_BUILD的两个取消勾选,找到INSTALL勾选Debug和Release,点击生成按钮,等待完成。
再之后,打开之前CMAKE_INSTALL_PREFIX项中设置的目录,即是生成好了的库文件。

4、测试

找个地方新建一个文件夹,将项目目录下bin中的osgviewerQt.exe复制进去,再在开始菜单中找到Qt 5.15.2(MSVC 2019 64-bit),点击打开。

用cd命令切换到此目录,然后输入

windeployqt osgviewerQt.exe

回车,它会将exe需要的Qt库复制进去。

然后将OpenSceneGraph的bin目录下的所有dll以及osgPlugins文件夹复制到此目录,将osgQt的bin目录下的osg145-osgQOpenGL.dll复制到此目录,将3rdParty的bin目录下的所有dll复制到此目录,将之前用到的glider.osg也复制到此目录(其实这里应该区分一下Debug和Release的dll,将需要的复制进去,不过是测试就不考虑这么多,如果要用于实际项目,建议还是要做下区分)。
接着运行cmd,用cd命令切换到此目录下,然后输入osgviewerQt glider.osg,按下回车。

如果出现了一个小窗体,上面是之前看过的紫色滑翔机,应该就没什么问题了。

四、结语

至此,所有的编译就均已完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/2282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maxwell安装使用和简单案例

一、解压 cd /opt/software/ ​ tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module/ ​ cd /opt/module/ 二、MySQL 环境准备 1、修改 mysql 的配置文件 修改 mysql 的配置文件&#xff0c;开启 MySQL Binlog 设置 vi /etc/my.cnf 添加以下内容 server_id1 log-binmysql-…

基于WOA优化的CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 GRU网络 4.3 注意力机制&#xff08;Attention&#xff09; 4.4 WOA优化算法 5.算法完整程序工程 1.算法运行效果图…

把 WordPress 变成 BaaS 服务:API 调用指南

有了前面两篇内容的铺垫&#xff0c;我们来聊聊 WordPress 作为 CMS / BaaS 服务使用时绕不开的问题&#xff0c;API 调用。 这篇内容同样的&#xff0c;会尽量少贴代码&#xff0c;简单的讲清楚一件事&#xff0c;降低阅读负担。 写在前面 首先&#xff0c;我们需要进行清晰…

Docker Compose 的安装和使用详解

Docker Compose 是 Docker 官方开源的容器编排(Orchestration)项目之一,用于快速部署分布式应用。本文将介绍 Docker Compose 的基本概念、安装流程及使用方法。 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,Docker C…

卡车卫星定位系统 user/create 未授权密码重置漏洞复现

0x01 产品简介 卡车卫星定位系统是一种基于卫星通信和导航技术的系统,用于对卡车的位置进行精确测定。该系统主要由一组卫星、地面控制站和接收器组成。通过测量卫星信号的传播时间,可以确定接收器(即卡车上的定位设备)所在的位置。具有高精度、高可靠性、全球覆盖等特点,…

上位机图像处理和嵌入式模块部署(树莓派4b的一种固件部署方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 如果软件开发好了之后&#xff0c;下面就是实施和部署。对于树莓派4b来说&#xff0c;部署其实就是烧录卡和拷贝文件。之前我们烧录卡&#xff0c;…

服务器防入侵的方案浅析

随着物联网技术和互联网技术的日益发展&#xff0c;勒索病毒、工控安全、产线作业都面领着极大的威胁。智慧互联正在成为各个行业未来的发展方向&#xff0c;智慧互联包括物联网、万物互联&#xff0c;机器与机器&#xff0c;工业控制体系&#xff0c;信息化&#xff0c;也就是…

FLStudio怎么冻结轨道以及如何批量复制音符

FLStudio是一款功能强大的音乐制作软件&#xff0c;广泛用于音乐制作和打谱当中。我们在制作音乐时&#xff0c;经常会遇到处理大量音频轨道的情况&#xff0c;过多的音频轨道可能会导致电脑性能受限&#xff0c;从而影响工作流程。为了应对这个问题&#xff0c;FLStudio提供了…

ctfshow web入门 SQl注入 web185--web190

web185 这道题还有另外一个脚本就是用concat的拼接达到有数字的目的 concat(truetrue) 2 concat(true) 1 concat(true, true) 11 然后上脚本&#xff08;Y4tacker这个师傅的&#xff09; # Author:Y4tacker import requestsurl "http://341e93e1-a1e7-446a-b7fc-75beb…

目标检测——行人交通信号灯数据集

一、重要性及意义 行人交通信号灯检测的重要性及意义主要体现在以下几个方面&#xff1a; 首先&#xff0c;行人交通信号灯检测对于提高道路安全性至关重要。通过准确识别交通信号灯的状态&#xff0c;行人可以更加清晰地了解何时可以安全地过马路&#xff0c;从而避免与车辆…

node.js版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 进入命令控制行窗口&#xff0c;输入where node&#xff0c;查看本地…

Android Studio历史版本下载地址

https://developer.android.com/studio/archive?hlzh-cn https://blog.csdn.net/crasowas/article/details/130304836

STM32F4使用FPU/DSP核心启用与测试

STEP1、下载DSP库 具体链接如下&#xff1a; https://www.st.com/en/embedded-software/stsw-stm32065.html?dl9w6sdOSAKySFxBhN764Stg%3D%3D%2CIS1vzyA84KLAefK%2B0DawUl0FScREpiT6AdC3qFjIMJnCIgXIwr82G2XUFo6w43Wp5L5CUyrX3vZAoaHRE3nsTmRsArV3hnQOEgX73SKt8ss1vGrLlfXT24j…

js获取某月往前推一年或半年的年月数组

前言 需求&#xff1a;需要显示某月份往前推一年或者半年的费用情况&#xff0c;显示到柱形图上&#xff0c;后台接口只返回有数据的年份&#xff0c;这就需要前端拿全部月份数组去比对并显示。 开始 上代码&#xff1a; // date:选择的月份,比如:2024-04,//n:半年或者1年,…

【UE5.1 C++】VS2022下载安装

目录 步骤 一、Visual Studio下载安装 二、Visual Studio Integration Tool插件安装 先看一下UE和VS的兼容性 &#xff08;虚幻5&#xff1a;为虚幻引擎C项目设置Visual Studio开发环境&#xff09; &#xff08;虚幻4&#xff1a;设置虚幻引擎的Visual Studio&#xff0…

libxml2读写XML文件测试

libxml2是一个功能强大的XML解析库&#xff0c;可以用于读取和写入XML文件。以下是一些基本的例子来展示如何使用libxml2进行读写操作。 写文件 在这个例子中&#xff0c;我们首先创建一个新的XML文档&#xff0c;并设置一个根节点。然后&#xff0c;我们创建两个新的节点&…

大型网站系统架构演化实例_6.使用分布式文件系统和分布式数据库系统

1.使用分布式文件系统和分布式数据库系统 任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后&#xff0c;从一台服务器拆分成两台服务器&#xff0c;但是随着网站业务的发展依然不能满足需求&#xff0c;这时需要使用分布式数据库。文件系统也一…

3dmax安装错误代码2146885616,也出现以下可选组件未成功安装:-Substance

当3dmax高版本出现安装错误代码2146885616&#xff0c;或者可选组件未成功安装:-Substance时&#xff0c;如图 解决方法如下 打开autoremove&#xff0c;点击扩展功能&#xff0c;搜索2146885616点击搜索 点击出现的按钮&#xff0c;提示如图&#xff0c;请重启电脑再点击一…

html网页在展示时,监听网络是否断网,如果断网页面暂停点击响应

序言&#xff1a; 集合百家之所长&#xff0c;方著此篇文章&#xff0c;废话少说&#xff0c;直接上代码&#xff0c;找好你的测试网页&#xff0c;进行配置&#xff0c;然后复制粘贴代码&#xff0c;就可以了。 1.css文件内容 #newbody{display: none;width: 100%;height: 9…