Ubuntu16.04系统下安装osg3.7+osgearth3.3

2023-11-19

Ubuntu16.04系统下安装osg3.7+osgearth3.4

前言

所有看到我现在写的文章的人想必都在为安装osgearth3.4版本而发愁,而本人在尝试安装osgearth3.4版本时,发现了许许多多的问题,但在网络上发现相关的教程寥寥无几,安装过程极为的痛苦,不过在反复重装了几次之后,终于成功安装osgearth3.4,所以在这里记录了安装过程中遇到的各种问题并给出了相应的解决方案。
在接下来的教程开始前,可以先看看这几篇文章
https://blog.csdn.net/qq_31817955/article/details/108441612
https://blog.csdn.net/Cappuccino_jay/article/details/125070871

安装背景

1.首先在这里的各位,如果不是非要在ubuntu16.04系统下使用osgearth的话,那么我奉劝各位不要在ubuntu16.04系统下安装osgearth,因为ubuntu16.04实在过于陈旧,安装过程中不仅要安装许多新的安装包,还必须对底层的各种软件包进行升级,比如说cmake,gcc等底层软件包都需要进行升级,相当于凭空多了许多工作量,环境配置也更加繁琐。

2.本人在配置osg+osgearth前的环境配置为:Ubuntu16.04+Opencv4.5.4+qt5+CMake 3.5.1+gcc5.4.0+openGL(NVIDA驱动不确定是否需要安装,如果安装失败可以尝试)

3.安装过程中可能删除部分安装包,请谨慎

安装全过程

前置库的准备

考虑到整个安装过程中需要安装多个安装包,所以在此创建一个独立文件夹packages储存所有安装包

cd ~
mkdir ~/packages
cd ~/packages

更新CMake

CMake至少要更新到3.10以上 ,本文使用的cmake版本为3.22

升级gcc

一般来说,ubuntu16.04自带的gcc版本为5.4.0,但是编译osgearth3.3需要用到c++17,所以我们需要对gcc进行更新,版本至少为7.x,而我选择更新的版本为9.5.0,,可以查看gcc版本的命令为gcc --version
源码下载地址:https://bigsearcher.com/mirrors/gcc/releases/gcc-9.5.0/
详细教程:
https://www.shuzhiduo.com/A/kvJ3nRyDzg/
https://blog.csdn.net/weixin_45747535/article/details/125902856
这两篇文章是直接下载安装,最好还是使用源码编译方式进行安装,这两篇文章仅供参考
https://blog.csdn.net/ljdudujsw/article/details/123426214
https://blog.csdn.net/liyuan_669/article/details/122500454
https://blog.csdn.net/m0_60027682/article/details/125738907
这三篇文章都包含源码编译anzhau的操作方法,你们可以根据自身的环境进行配置,但千万要记住之前版本的gcc5.4.0千万别删,接下来的编译过程还用得着,注意自己新安装的gcc和原来的gcc可执行文件到底是在usr/local/bin文件夹下,还是在usr/bin文件夹下。当切换gcc版本时,发现只有一个版本可切换,那么很可能是没有添加就有的gcc-5的信息,可以使用命令

sudo update-alternatives --install /usr/bin/gcc g++ /usr/bin/gcc-5 50

记得不仅要添加gcc,也要添加g++,每次切换版本时,确保gcc和g++版本一致。
在接下来的安装过程中,默认版本为5.4.0,当要求使用c++17或是出现单纯的语法错误时,切换gcc和g++版本为9.5.0

升级gdal

由于osgearth比较高端,所以gdal也必须进行升级,我们可以通过命令

gdalinfo --version

查看gdal当前版本,ubuntu16.04默认版本为GDAL 1.11.3,而要想安装osgearth,gdal版本必须在2.3以上,经过升级之后目前我的gdal版本为GDAL 3.6.0

安装教程可以看这篇博客https://blog.csdn.net/qq_41848682/article/details/110912703,相关安装包可以在这篇文章中引用的另一篇博客中有详细的记载。

sqlite3安装

我安装的sqlite版本为SQLite version 3.39.2,如果sqlite3安装出现了一些问题,可以看看以下两篇博客
https://blog.csdn.net/u012850999/article/details/79534129
https://zy010101.blog.csdn.net/article/details/109636486?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109636486-blog-114717481.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109636486-blog-114717481.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=1这篇文章是使用apt-get install直接安装的,不推荐但是确实很方便,顺便介绍了sqlite3环境的使用方法,建议看看。

PROJ安装

我安装的PROJ版本为9.0.0,cmake编译。如果安装失败可以看看它们的官网https://proj.org/install.html,不过安装过程中可能会出现问题fatal error: goo/gtypes.h: No such file or directory,这是因为需要升级poppler,ubuntu16.04自带的poppler没有这个文件。

Poppler安装

poppler可以从官网:https://poppler.freedesktop.org/releases.html下载,里面不同的安装包都有着各自的要求,我这台电脑安装了qt5,选择的poppler版本为0.52,安装过程我是直接**./configure**,往往这个时候又会出现新的问题Could NOT find Freetype (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS),这也就意味着你需要安装freetype了。

freetype安装

安装过程中,要求freetype版本必须高于2.8,在这里我下载了freetype 2.10.4.tar.gz
下载官网:https://download.savannah.gnu.org/releases/freetype/
教程:https://blog.csdn.net/github_35807147/article/details/88972554
其实安装过程也就是

cd ~/packages/freetype2.10.4
./configure
make -j4
sudo make install

安装openscenegraph

osgearth可以理解为是openscenegraph软件包的一个扩展工具包,想要安装osgearth就必须先安装openscenegraph。
相较于osgearth,osg安装过程比较简单,在这里我也不过多赘述,有两种方法可以安装openscenegraph

1.直接安装

在终端输入

sudo apt-get install openscenegraph

一般这种方法可以直接成功安装openscenegraph3.7,但是考虑到接下来的osgearth的安装需要设置openscenegraph安装包内cmake文件中opengl的模式,以及在反复的安装过程中可能需要多次安装或者卸载openscenegraph,所以在此建议各位想要安装osgearth3.x版本的同胞,绝对不要为了图省事直接安装,而是要采用源码编译的方式进行安装。

2.源码编译安装

git clone https://github.com/openscenegraph/OpenSceneGraph //在github中下载openscenegraph安装包
cd OpenSceneGraph

在OpenSceneGraph文件夹下我们打开CMakeLists.txt文件,搜索关键词OPENGL_PROFILE,寻找到
**SET(OPENGL_PROFILE “GL3” CACHE STRING “OpenGL Profile to use, choose from GL1, GL2, GL3, GLES1, GLES2, GLES3”)**这一行代码,标记内容可能为GL2或其他的选项,但是在这里一律将标记内容修改为GL3,运行以下命令进行安装。

mkdir build
cd build 
cmake ../
make -j4
sudo make install

编译时间可能会比较长,需要耐心等待。确认一切安装成功后,尝试在终端输入以下命令

osgversion

如果安装成功的话,会出现以下内容

OpenSceneGraph Library 3.7.0

如果想要一部分openscenegraph资源的话可以去openscenegraph官网,去那里下载资源包OpenSceneGraph-Data-3.4.0.zip,里面还有许多模型文件(cow.osg)。

安装osgearth

第一步,在github上下载osgearth的安装包

打开packages文件夹,在当前文件夹下下载osgearth源码

cd packages
git clone https://github.com/gwaldron/osgearth //在github中下载osgearth安装包
cd osgearth
mkdir build
cd build 
cmake ../
make -j4
sudo make install

如果安装成功的话,终端输入以下指令

osgearth_version

就会出现

osgEarth 3.3.0 build 139

安装过程中可能出现的问题及对应解决方案

1.找不到文件glyphs.proto

这个文件找不到很正常,官网和github上的源码都没有这个文件,它需要我们自己生成,详细内容可以参照这个博主写的文章
https://blog.csdn.net/tanmx219/article/details/123909030
一般ubuntu系统会自带protocol buffer,我们可以输入命令protoc --version查看,本人电脑输入命令后的结果为

libprotoc 2.6.1

所以我们可以直接尝试输入以下命令

protoc -I=~/packages/osgearth/src/osgEarth --cpp_out=~ ~/packages/osgearth/src/osgEarth/glyphs.proto

文件gluphs.proto就会自动生成。

而如果电脑没有protocol buffer,就可以参考上面那个网站链接,去下载源码然后编译安装。至于软件版本问题,我按照上面那个版本安装openscenegraph也没有什么大问题。

2.在运行osg相关程序,比如osgviewer时,会出现以下警告error while loading shared libraries: libosgDB.so.202: cannot open shared object file: No such file or directory

首先可以先在电脑中搜索对应的文件,例如 libosgDB.so.202,如果在电脑中没有该文件那就重新安装openscenegraph;
而如果电脑确实有这个文件,但只是编译过程中无法检索到的话,就需要将动态库文件所在路径添加到/etc/ld.so.conf中,以下是我的ld.so.conf文件的内容,因为安装过程中使用默认路径,所以一般会新建一个文件夹usr/local来存储编译出来的文件,因此我们需要将对应路径添加到ld.so.conf文件中,当然,因为环境不同,你们电脑中对应路径可能与我的有所不同。

include /etc/ld.so.conf.d/*.conf
/usr/local/lib64
/usr/local/lib
/usr/local/lib/x86_64-linux-gnu

保存之后,输入命令sudo ldconfig,如果在完成上述操作之后,仍旧会出现相同的错误,那么可能是因为以前安装了不同版本的openscenegraph,又没有卸载干净,所以为了解决这个问题,建议各位将电脑中有关osg的编译文件全部删除,切记要手动删除,不要用类似autoremove之类的命令,仅仅删除那些.so文件就好。
可以参考文章http://blog.chinaunix.net/uid-22166872-id-4243708.html

3.运行程序时终端发出警告[osgEarth]* [Capabilities] Warning, OpenSceneGraph does not define OSG_GL3_AVAILABLE; the application may not function properly

这个问题的出现往往是因为安装openscenegraph时,没有修改CMakeLists文件的OPENGL_PROFILE值,按照上文的内容将其设为GL3,然后重新编译安装,就可以解决这个问题。

4.error: ‘OGRRegistryAll()’ was not declared in this scope

在源文件src/osgearth/Registry.cpp中添加头文件#include <ogrsf_frmts.h>

5.使用osgviewer显示cow.osg模型,发现牛身一片漆黑,终端还会报以下错误

Warning: Material::apply(State&) - not supported.
Warning: detected OpenGL error 'invalid enumerant' at after RenderBin::draw(..)

就我个人建议,习惯就好,会出现这样问题的原因是因为opengl_profile采用了GL3模式,但是开发人员很明显没有考虑到更换模式之后那些例子(osgviewer)也没法用,所以没有对应的处理代码,不过其中一部分问题还是可以解决的。

在模式切换为GL3之后,就没有办法使用渲染管线的方法处理,就必须使用shader编译着色器,关于glsl(opengl shader language)的具体语法可以去opengl官网进行学习,不过在osg的应用部分可能会在我的后续文章中出现,在这里不过多赘述。总之,在多次的实验中可以确认,这个牛之所以是黑色的,与它的底层代码有关,无论怎么修改shader,只要它有关纹理的底层代码不变,就无法让牛变成彩色。

而关于Material::apply的警告完全是因为使用了material的类,而在GL3模式下Material类的代码基本上已经退环境了,勉强还可以用,但是还有像上面一样的警告,而cow.osg模型中依旧使用了material类,所以想要解决这个问题,要么重新读取cow,osg数据,再自行编辑shader,重新创造一个模型,要么直接去底层源码material.cpp中注释掉警告代码,再重新编译安装。

而这个警告信息**detected OpenGL error ‘invalid enumerant’ at after RenderBin::draw(…)**是唯一能够完美解决的问题,可以在OpenSceneGraph/examples/osgsimplegl3.cpp中找到解决问题的代码,

const std::string version( "3.0" );\\3.1也可以,其他不行
traits->glContextVersion = version;

6.安装过程中出现

/usr/include/pngconf.h:383:12: error: ‘__pngconf’ does not name a type
  383 |            __pngconf.h__ in libpng already includes setjmp.h;
      |            ^~~~~~~~~
/usr/include/pngconf.h:384:12: error: ‘__dont__’ does not name a type
  384 |            __dont__ include it again.;

直接sudo apt-get install libpng16-dev libtiff5-dev libjpeg-dev

7.freetype安装后出现

Make Error at /usr/local/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Freetype (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
  (Required is at least version "2.8")
Call Stack (most recent call first):

将之前的freetype文件手动删除干净然后重装

8.ubuntu自带的fontconfig不给力

No package 'fontconfig' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables FONTCONFIG_CFLAGS
and FONTCONFIG_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

最后的方法:重装fontconfig,版本与ubuntu自带fontconfig一致,我的电脑ubuntu16.04系统中fontconfig版本为2.11.94

9.OpenJpeg

缺少这个库就去https://www.linuxfromscratch.org/blfs/view/svn/general/openjpeg2.html下载OpenJpeg2.5.0,cmake编译安装

10.gdal编译时gcc版本问题

Linking C executable test_include_from_c_file
../../libgdal.so.31.3.6.0: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26'
../../libgdal.so.31.3.6.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'
collect2: error: ld returned 1 exit status
autotest/cpp/CMakeFiles/test_include_from_c_file.dir/build.make:97: recipe for target 'autotest/cpp/test_include_from_c_file' failed
make[2]: *** [autotest/cpp/test_include_from_c_file] Error 1
CMakeFiles/Makefile2:11674: recipe for target 'autotest/cpp/CMakeFiles/test_include_from_c_file.dir/all' failed
make[1]: *** [autotest/cpp/CMakeFiles/test_include_from_c_file.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2

尝试切换版本,gcc5.4和gcc9.5都可以试试看,在我的电脑里编译gdal时一定要将gcc和g++改为5.4.0版本,编译osgearth则需要使用c++17,即需要gcc7.x版本以上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu16.04系统下安装osg3.7+osgearth3.3 的相关文章

  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver

随机推荐

  • 浅析『链上数据分析』 : 区块链 + 数据分析

    什么是链上数据分析 01 区块链 02 链上数据 03 为什么要分析链上数据 04 数据分析思维 05 数据分析技能 06 数据分析工具 07 业务逻辑理解 什么是链上数据分析 链上数据分析 顾名思义 就是对区块链上的数据进行分析 其实就是
  • StringBuilder类解析

    StringBuilder 构建字符串 有时候我们需要来不断拼接小的字符串来满足我们的需求 如果用字符串拼接的方法 效率会比较低 此时StringBuilder类为我们提供了便捷 下面是一些它的常用方法 StringBuilder stri
  • anaconda,cuda,torch,lightning的安装

    本博客仅作为初学者参考使用 汇总了多位大牛的博客 如有侵权请联系我删除 anaconda cuda torch lightning的安装 1 Anaconda 2 cuda 3 pytorch 4 lightning 5 解决pip执行后导
  • COCO数据集格式(详解)及COCO标注可视化。json转COCO等代码

    coco数据集JSON文件格式分为一下几个字段 info info dict licenses license list 内部是dict images image list 内部是dict annotations annotation li
  • Qt之QGraphicsView入门篇

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 简介 在Qt界面库中 对于图形的绘制 可以使用 QPainter 实现普通二维图形的绘制 该方法在 paintEvent 事件里编写绘图程序 其
  • 对人工智能芯片的一些看法

    人工智能芯片 2016年 随着阿尔法狗击败专业人类围棋棋手 已 深度学习 为基础的人工智能技术被大众所熟知 其实 深度学习 技术已经发展了有近30年的历史了 现在的 深度学习 的实现以神经网络技术为主 神经网络通过模拟大脑生物神经网络的连接
  • [OpenGL ES 06]使用VBO:顶点缓存

    OpenGL ES 06 使用VBO 顶点缓存 罗朝辉 http www cnblogs com kesalin 本文遵循 署名 非商业用途 保持一致 创作公用协议 这是 OpenGL ES 教程 的第六篇 前五篇请参考如下链接 OpenG
  • 数据库中连接(join)运算

    摘自 数据库原理与应用 第2版 宋金玉 陈萍 陈刚编著
  • Java学习前言—JDK、JRE、IntelliJ IDEA

    一 jdk java developer kit 与 jre java runtime environment 1 jdk是Java开发工具包 安装后可以编写Java程序 2 jre是Java运行环境 安装后可以运行Java程序 二 Ubu
  • Python爬虫工程师都需要掌握那些知识

    Python爬虫工程师都需要掌握那些知识 今天老师跟大家聊聊Python爬虫工程师需要掌握的知识 Python语言无论是在学术上还是就业上现在都非常受欢迎 很多都在学习Python 因为Python不仅能够做大数据分析 爬虫 云计算 还能做
  • SpringBoot 打 jar包和打war 包配置

    文章目录 1 前言 2 SpringBoot 打 jar 包 3 SpringBoot 打 war 包 4 小结 1 前言 目前我们熟知的SpringBoot 打包方式 一共分为两种 一种是打jar 包 内置tomcat 方式 yml 里的
  • 因果关系基本概念:后门标准

    阅读David Salazar的文章Causality To adjust or not to adjust后的笔记 文章目录 动机 实例 动机 在前面的文章中 我们知道就算控制再多的变量 也不一定能准确估计 采用后门标准 backdoor
  • 太阳神三国杀源代码 HOW TO BUILD

    HOW TO BUILD Tips stands for the folder where the repo is in VS2013 Windows Download the following packages 1 QT librari
  • 2016年1月15日(DEMO12-2ALPHA混合。)

    简而言之 alpha混合就是透明度 计算 Final src1 alpha src2 1 alpha 分解成RGB分量同样适用 其中 src1和src2为RGB格式 长16位 混合因子 0 255 长8位 创建alpha查找表 For 0到
  • Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解

    本文将会详细介绍怎么开发一个屏蔽微信 7 0 5 朋友圈WIFI下自动播放视频插件 背景介绍 周五下班在地铁上刷微信时看到一个新闻 说是微信更新后在WIFI下自动播放视频还没法关闭 这个问题前几天我也遇到了 但是我记得设置里边有一个工作可以
  • 【代码随想录】回溯算法刷题

    代码随想录 回溯算法 组合 组合总和 III 电话号码的字母组合 组合总和 I 组合总和 II 分隔回文串 复原 IP 地址 子集 I 子集 II 递增子序列 全排列 I 全排列 II 重新安排行程 hard N 皇后 hard 解数独 h
  • js里map和reduce的用法

    map和reduce let arr 1 5 7 8 5 1 let arrNew arr map item gt item 2 console log map结果 arrNew 2 let arrNews for let i 0 i
  • 浅析Spring.NET(一):Spring.NET及简单使用

    浅析Spring NET 文章目录 浅析Spring NET 一 Spring NET 简单使用 1 什么是 Spring NET 2 快速创建第一个使用 Spring NET 的程序 注意事项 一 Spring NET 简单使用 最近用到
  • 数据库第七周【第五章作业存储过程】

    本章的作业题目来自第八章 T SQL建立存储过程的标准形式 Create procedure
  • Ubuntu16.04系统下安装osg3.7+osgearth3.3

    Ubuntu16 04系统下安装osg3 7 osgearth3 4 前言 安装背景 安装全过程 前置库的准备 更新CMake 升级gcc 升级gdal sqlite3安装 PROJ安装 Poppler安装 freetype安装 安装ope