- 博客(361)
- 资源 (41)
- 问答 (1)
- 收藏
- 关注
原创 一文详解ETC1压缩纹理——OpenGL中ETC1纹理加载与渲染实践
ETC1(Ericsson Texture Compression)是一种有损纹理压缩技术,2005年初由爱立信研究院参与研发,目的是用于减少移动设备和嵌入式系统中纹理存储的内存占用,应用场景见于游戏、VR、AR等需要大量的纹理资源来创建高质量的视觉效果以及复杂的动画效果场景。
2024-08-14 18:23:19 119
原创 一文详解ETC1压缩纹理——移动平台纹理加载高性能解决方案
ETC1(Ericsson Texture Compression)是一种有损纹理压缩技术,2005年初由爱立信研究院参与研发,目的是用于减少移动设备和嵌入式系统中纹理存储的内存占用,应用场景见于游戏、VR、AR等需要大量的纹理资源来创建高质量的视觉效果以及复杂的动画效果场景。
2024-08-14 18:20:21 219
原创 一文详解ExternalOES与TEXTURE_2D纹理:揭秘两种纹理的使用方式、区别与联系
在使用OpenGL ES进行图形图像开发时,我们常使用GL_TEXTURE_2D纹理类型,它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景,可以用于展示静态贴图、渲染2D图形和进行图像处理等操作。另外,有时我们需要从Camera或外部视频源读取数据帧并进行处理。这时,我们会使用GL_TEXTURE_EXTERNAL_OES纹理类型。其专门用于对外部图像或实时视频流进行处理,可以直接从 BufferQueue 中接收的数据渲染纹理多边形,从而提供更高效的视频处理和渲染性能。
2024-07-05 16:36:00 162
原创 运营商名称 是如何显示到 手机通知栏上的?
在我们日常使用手机的过程中,经常会在通知栏或设置菜单中看到特定的运营商名称,例如"中国移动"、"中国联通"或"中国电信"等。那么,这些运营商的名称是如何出现在我们手机上的呢?手机又是如何区分不同运营商的网络呢?当我们漫游到海外时,手机显示的是国外还是国内的运营商名称呢?
2024-04-09 19:10:08 1741
原创 一文详解RTSP协议:流媒体传输控制协议
RTSP由RFC2326规范,是一种实现实时流媒体传输与播放的控制协议,可用于流媒体的点播和直播场景。RTSP主要有两个方面的作用:一是用于协商客户端与服务端之间的实时媒体通道。二是在建立媒体通道后,通过RTSP协议定义的控制方法(Method),实现流媒体的播放、暂停、停止、快进、倒退等控制操作。
2024-02-02 14:33:40 495
原创 一文详解MSRP协议:IM多媒体信息的传输协议
MSRP(Message Session Relay Protocol)消息会话中继协议,由RFC4975规范,是一种基于文本的、面向连接的协议。常用于在IM实时通信会话中传输或交换多媒体数据(文本、图片、音视频文件等)。支持点对点和多点传输,并提供了扩展性,可以适应不同的应用场景和需求。
2024-02-02 10:27:58 429
原创 OpenGL纹理转换谜团:纹理写入FRAMEBUFFER后的镜像现象
在OpenGL中,将一个 GL_TEXTURE_2D 纹理写入到 GL_FRAMEBUFFER ,然后从GL_FRAMEBUFFER读取为GL_TEXTURE_2D纹理后,发现GL_TEXTURE_2D纹理变为了输入纹理的镜像纹理。本文将探讨这个问题的原因,并提出解决方案
2024-01-02 20:24:09 992
原创 一文详解ExternalOES与TEXTURE_2D纹理:揭秘两种纹理的使用方式、区别联系和转化方式
在实际应用中,我们通常将TEXTURE_2D和TEXTURE_EXTERNAL_OES纹理类型分开使用,并且它们互不干扰。实际上,这种情况占据了80%的使用场景。然而,有时候也会遇到一些特殊情况,需要将TEXTURE_EXTERNAL_OES纹理转化为TEXTURE_2D纹理进行视频处理。这里对此情况,一般我们可以通过一些技术手段,如离屏渲染或FrameBuffer帧缓冲区对象,将TEXTURE_EXTERNAL_OES纹理转换为TEXTURE_2D纹理,再进行后续的处理和计算。
2023-12-21 18:50:10 2341
原创 一文学会WebRTC API:掌握实时通信利器
WebRTC(Web Real-Time Communication)是一项开放标准和技术集合,由 W3C 和 IETF 等组织共同推动和维护,旨在通过Web浏览器实现实时通信和媒体流传输。WebRTC于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准,其提供了一组API和协议,使开发者能够在浏览器中构建实时音视频通信、数据传输和协作应用。目前WebRTC已得到包括主流的Web浏览器(如Chrome、Firefox、Safari)和移动设备平台的广泛的
2023-10-17 15:03:25 954
原创 一文详解常见标准化组织
从事软件研发工作多年,在工作中有时会查阅一些通信相关的国际标准。然而,对于制定这些标准的组织,一直缺乏一个系统的了解。本文将对几个常见的标准化组织进行介绍,其中包括ITU、3GPP、GSMA和CCSA,了解它们的背景、成立目的和主要任务。
2023-07-14 10:26:54 1577
原创 一文详解 Okio 输入输出流
Okio最初是作为OkHttp的一个组件出现,是 OkHttp 实现HTTP协议数据构建、解析中使用到的底层 IO 库。其相比于传统的 java.io 和 java.nio ,其在文件、网络等数据读写操作更加便捷、高效。
2023-07-14 09:53:20 616
原创 一文学会TextureID渲染到Surface
将一个GL_TEXTURE_2D类型的纹理ID写入到ImageReader生成的Surface中。具体实现是使用 EGL 提供的 eglCreateWindowSurface() 函数,将 EGLSurface 与 Surface 对象关联起来。然后就可以通过 OpenGL ES 将渲染结果绘制到 EGLSurface 中,最终渲染到Surface上。
2023-07-12 15:30:17 852 1
原创 OpenGL不够用?为何还要开发Vulkan?
对于许多图形开发者来说,OpenGL是一个非常熟悉和广泛使用的图形API接口。然而,随着计算机图形处理的需求越来越高,OpenGL也逐渐显露出一些不足,例如驱动程序开销较高、多线程支持不足等。为了解决这些问题,并更好地满足现代计算机图形处理的需求,新一代图形API接口Vulkan应运而生。
2023-06-30 13:09:28 2384
原创 一文详解IPv4与IPv6:协议解析与报文对比
前段时间的工作大多与通信协议相关,随着协议相关工作的不断深入,相关数据包的分析占据了不少工作时间。在数据报文分析中,发现大学期间IP协议内容已经重新还给了老师,相关知识完全没有了印象,这篇文章算是一篇复习文,对相关IP协议进行重学习。
2023-06-12 17:34:10 5334 1
原创 一文详解 SCTP 协议:高可靠网络传输的协议基石
SCTP(Stream Control Transmission Protocol)流控制传输协议,由 RFC2960 定义。SCTP的设计目的是提供一种可靠的、面向消息的数据传输服务,以便于支持多点通信以及满足传输的可靠性需求。SCTP 目前广泛应用于VoIP、移动通信和云计算等领域。
2023-05-05 21:26:02 2586 1
原创 一文详解 DTLS 协议:安全传输的协议基石
DTLS (Datagram Transport Layer Security)数据包安全传输协议,用于在不可靠的数据包传输协议上 (如UDP)提供数据的安全传输,DTLS1.2版本由 RFC6347 定义。DTLS为TLS协议的一个变体,因TLS不能用来保证UDP上传输的数据的安全性,Datagram TLS试图在现存的TLS协议架构上提出扩展,成为TLS的一个支持数据包传输的版本。DTLS常用于保护实时通信 (如VoIP和视频会议) 以及IoT设备通信的信息安全。
2023-03-27 10:31:07 2454
原创 一文读懂字符编码ASCII、Unicode与UTF-8
最近在写一个Http协议栈当涉及CRLF控制字符写入时,发现自己对CRLF与\r\n的关系不太了解,因此决定详细学习一下;查阅资料的同时,又遇到UTF-8与ASCII编码的疑问。
2023-03-13 18:07:45 687
原创 一文详解jitpack多渠道maven库发布
JitPack 是一 个构建与发布 Git 存储库的便捷服务,可用于在 GitHub、GitLab 上打包、发布与部署依赖库,便于使用者通过maven依赖的形式引用开发者发布的依赖库。
2023-02-21 22:33:35 852
原创 一文详解 Linux Crontab 调度任务
在Linux环境中,Crontab是一个调度守护进程,可以按分钟、小时、每月的某天、每月、每周的某天来执行特定任务,这些特定的任务被称为 Cron 作业,基于这个特点,Crontab 经常被用于自动执行系统维护与管理。
2023-01-12 20:50:59 1638
原创 Android 13(API 33)新特性及适配指南
Android 13(API 33)于 2022年8月15日正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内部分应用软件开发厂商已逐步接到手机厂商(华米OV等)的新版本适配要求。当前,对于Android应用开发者来说,Android 13 的软件兼容适配已需提上工作日程。
2022-10-24 15:39:34 11736 7
原创 一文详解 implementation api embed
最近使用 Android Studio 从事项目开发时,发现对 implementation、api、embed 的用法了解的不是很清楚,这里准备一篇文章对其使用场景或者说是使用方式进行一个总结。
2022-08-10 10:57:55 2346
原创 一文详解 WebSocket:双向长连接数据传输协议
WebSocket 是一种应用层网据传输协议,可在单个TCP连接上进行全双工数据通信。WebSocket 诞生于2008年6月,2011年底成为国际标准,其最初被应用于HTML5规范中。WebSocket协议相比于Http协议,其最大的特点是`允许服务端主动向客户端推送数据`,`客户端也可以主动向服务端请求数据`。在WebSocket API中,浏览器和服务器只需要`完成一次握手`,两者之间就可以建立持久性的连接,并进行双向数据传输。
2022-05-20 00:13:28 903 1
原创 一文详解 Python3使用openpyxl或xlrd依赖库读写Excel
最近工作中需要统计APP线上终端用户 `手机品牌`、`手机型号`与`对应型号的用户量`,并生成Excel表格汇报项目组。因线上手机品牌、型号数量过于庞大,手动操作过于消耗时间,所以搞了一个 python3 的脚本来生成所需要的表格。
2022-04-01 23:07:17 4220
原创 Android 12(API 31)新特性及适配指南
Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经逐步开启了Android 12正式版本的更新。当前,对于Android应用开发者来说,Android 12 的软件兼容适配已迫在眉睫。
2022-03-19 22:08:09 15247 2
原创 Android 12(API 31)适配指南——SplashScreen
Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。
2022-03-16 11:34:56 15367 2
原创 一文学会 使用Kotlin Coroutine协程
关于线程、协程两者的对比,可以简要叙述如下:线程:线程由操作系统调度,线程切换或线程阻塞由操作系统和CPU调度实现;协程:协程运行于操作系统的用户态,其依赖于线程来实现,通过用户态程序控制,尽量`减少或避免因线程阻塞造成的操作系统与CPU开销`。与线程相比不同点在于,`协程挂起时不需要阻塞其运行的线程`。`协成挂起`期间,其对应的`线程可以被分配其他协程任务来执行`,待`该协程任务挂起结束再次开始时,将该协成再次交由某个线程来继续执行`(挂起期间,`类似于将该协程任务添加到了某个任务队列中`)
2022-03-09 18:16:23 7054
原创 一文详解 RTP/RTCP协议:流媒体数据传输的协议基石
RTP协议 运行于传输层UDP协议之上,与RTCP协议协作 常用于流媒体数据传输,例如:直播、远程摄像头流媒体播放、流媒体视频播放、视频会议等应用场景。其规定了在互联网上传递音频和视频的标准数据包格式,最初被设计为一个多播协议,但后来被常被应用在很多单播应用中。
2022-01-17 18:23:39 3988
原创 一文详解 OpenGL ES 纹理颜色混合
在OpenGL中绘制的时候,有时候想使新画的颜色和已经有的颜色按照一定的方式进行混合。例如:想使物体拥有半透明的效果,或者绘制叠加光亮的效果,这时候就需要用到OpenGLES混合。如上图所示,为石头墙、绿色矩形、蓝色云彩 三个矩形混合后的展示效果。三个矩形(Z轴深度由深到浅)分别为,石头墙、绿色矩形、蓝色云彩。一、混合API在OpenGLES中若使用混合,需要用到API函数方法(Java):void glBlendFunc( int srcfactor, int destfactor );(1)
2021-11-30 15:51:17 1644
原创 一文了解 OpenGL ES Shading Language
从OpenGL ES2.0开始,OpenGL ES由固定渲染管线更改为可编程渲染管线。因此开发人员若使用OpenGL ES2.0版本及以上API进行图形渲染,必须使用着色语言(OpenGL ES Shading Language)编写顶点着色器与片元着色器的代码。与OpenGL ES1.x固定渲染管线相比:顶点着色器 取代了固定渲染管线中的 变换和光照;片元着色器 取代了固定渲染管线中的纹理环境和颜色求和、 雾 以及 Alpha测试。OpenGL ES 着色语言(OpenGL ES Shadin
2021-11-29 17:29:10 374
原创 一文详解 OpenGL ES 3.x 渲染管线
OpenGL ES 构建的三维空间,其中的三维实体由许多的三角形拼接构成。如下图左侧所示的三维实体圆锥,其由许多三角形按照一定规律拼接构成。而组成圆锥的每一个三角形,其任意一个顶点由三维空间中 x、y、z 三个坐标分量来定义。对于我们日常使用的移动手持设备,手机屏幕窗口由不连续的有限的二维像素小格子构成的,每一个像素格子有x、y两个分量来定义。因此在OpenGL ES绘制流程中,其主要工作是将三维空间中的坐标点(x,y,z)构成的三维图形,转化为手机屏幕上的二维像素点。这个转化过程主要分为两个步骤:
2021-11-22 10:55:30 1531
原创 一文分析 Android现状及发展前景
Coding这些年,一直低头“搬砖”,好像从未仔细审视过Android的发展现状,亦未好好思考Android的发展前景。“低头干活,还要抬头看路”,写一篇文章简要审视一下Android的发展现状、展望一下Android的发展前景。Android 诞生背景Android 发展现状Android 前景趋势从Android的诞生背景开始说起,举例一些数据看一下Android当前的发展现状,最后结合数据看一下Android的未来发展。一、诞生背景2003年10月,Andy Rubin、Rich Mi
2021-11-17 19:11:57 14309
原创 一文了解 OpenGL ES
OpenGL ES(OpenGL for Embedded Systems) 是一种免费的跨平台3D图形 API接口,其适用于低功耗设备,可用于嵌入式设备和移动设备(包括手机、车载大屏 和嵌入式电器终端设备)上渲染高效的 2D 、 3D 图形。其由OpenGL(Open Graphics Library)针对嵌入式设备裁剪而来,去除了OpenGL中许多不是必须冗余特性,比如:GL_QUADS(四边形)、GL_POLYGONS(多边形)绘制模式、glBegin(开始)/glEnd(结束)等特性。OpenG
2021-11-17 16:53:21 2448
原创 一文读懂App服务保活:Android进程及TCP动态心跳机制
面对国内GCM推送服务不可用,也未出现一个统一市场PUSH平台的现状。早期的第三方软件一般通过维持一个终端与远端服务器之间的TCP长连接,达到PUSH拉活和消息及时送达的目的。而为了维持这个`TCP长连接`不断开,前提条件就是保证自己APP的后台服务进程,不会被杀死(因为只有活着的终端进程才能定期与远端服务器通信,保证长连接不断连)。
2021-10-28 09:04:09 3537
原创 一文分析 快应用技术架构及业务前景
2018年3月 华为、小米、Oppo、Vivo、中兴、联想、魅族、一加、努比亚、金立 共10家国内终端厂商成立快应用联盟,并召开快应用标准发布会。新成立的快应用联盟,在快应用技术规范层面做了统一,保证快应用开发者开发的快应用,可以直接在所有快应用联盟内厂商的终端设备上运行。
2021-09-14 08:19:01 6109 10
原创 一文掌握Git代码统计:文件代码量与用户代码贡献度
领导要求统计研发人员代码量,第一反应用git来统计,经过网络查询后,发现有两种命令可用。git ls-files统计主工程某个文件夹下文件代码量,git log统计基于用户的代码贡献行数。
2021-08-31 18:28:39 1710
原创 一文详解 Interpolator动画插值器
Interpolator 被用来修饰动画效果,定义动画的变化率。 在Android源码中对应的接口类为 TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速、正加速、负加速、无规则变加速等0~1之间的变化曲线。
2021-08-30 19:35:22 1232
原创 一文详解 OpenGL ES 2.x 渲染管线
khronos官方对OpenGL ES的描述如下:OpenGL® ES is a royalty-free, cross-platform API for rendering advanced 2D and 3D graphics on embedded and mobile systems - including consoles, phones, appliances and vehicles. It consists of a well-defined subset of desktop OpenG
2021-08-27 21:12:39 710
原创 一文了解 操作系统发展史
最近在写一个Android、IOS、Fuchsia、HarmonyOS对比的报告,需要了解一下各操作系统的起源联系以及内核的对比,因此有了这个文章总结(算是学习笔记吧)。一、各历史阶段的操作系统我们都知道,操作系统自20世纪50年代诞生。操作系统诞生后经历了从专用操作系统(每个主机与应用场景均需要一个新的操作系统)到通用操作系统(一个操作系统覆盖很多设备与应用场景,如Windows、Linux等)的转变。PC时代由于Windows操作系统的广泛应用部署,微软于20世纪90年代成为全球市值最高的公司
2021-08-19 15:07:25 8823
原创 一文详解 Base64编码原理
Base64 是一种 编码方式,最早出现在电子邮件传输协议中。 电子邮件问世之初,传递消息时只支持 ASCII 字符,后来随着电子邮件的广泛使用,传递非ASCII字符内容的需求增加,例如:传输中文、传输文件(图片、视频)。
2021-08-04 11:01:52 1208
原创 一文详解 MD5 信息摘要算法
对于软件研发人员来说 MD5 不是一个陌生的词汇,平时的软件研发中,经常使用 MD5 校验消息是否被篡改、验证文件完整性,甚至将MD5当作加密算法使用。MD5虽不陌生,但不是所有研发人员都了解其算法原理,通过这篇文章详细学习MD5 摘要算法。
2021-07-13 09:11:14 3474
Android端 网易公开课3D动画勋章 实现源码
2021-11-02
SIMalliance_OpenMobileAPI2_02.rar
2021-07-30
capture.pcap
2020-06-12
SIP-RFC3428.doc
2020-03-07
ES_001_Triangle
2015-11-14
Gson简单与复杂json数据解析案例
2014-11-26
完善程序地图poi搜索
2014-11-26
Android_surfaceView与layout屏幕适配总结
2014-10-27
shader中uniform变量的if或for会降低帧率
2014-10-27
Xml本地格式化工具(Java代码显示,图形操作)
2014-08-10
Android用SAX2解析xml
2014-08-07
android静默卸载data/app下的应用程序
2014-07-03
android静默卸载指定包名APP
2014-07-02
百度地图附近商铺信息
2014-05-20
png转pkm“Mali-Texture-Compression-Tool-v4Windows-x64”和“pkm.zip”资源
2024-08-13
OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据
2024-08-08
Android工程OpenGL ES中YUV420转化RGB工程实现源码
2024-07-22
ExternalOES纹理数据 转换为 TEXTURE-2D纹理数据 工程代码
2023-12-21
OpenGLES渲染播放Sdcard中的视频资源
2023-11-02
Android平台OpenGLES3将GL-TEXTURE-2D纹理id渲染到ImageReader提供的Surface上
2023-06-28
监听Android系统软键盘的弹出与关闭(案例代码)
2023-06-20
TCP与TLS数据报文抓包
2023-03-18
Android使用 jitpack 发布 maven 多渠道AAR依赖库 案例实现
2023-02-21
Android录制屏幕生成mp4文件
2022-07-07
Python3使用openpyxl、xlrd依赖库操作Excel案例源码
2022-04-15
Python3使用xlrd修改Excel数据映射关系
2022-04-01
Android12 SplashScreen使用案例代码下载
2022-03-16
安卓Kotlin Coroutine协程使用案例代码
2022-03-09
Android veridex 非SDK接口检测工具
2022-02-16
Android平台 使用OpenGLES3.0实现纹理纹理、颜色混合
2021-12-15
Android平台 OpenGL ES3.0绘制点、线、三角形实现源码
2021-12-10
Android平台OpenGLES生成使用Mipmap纹理
2021-12-08
OpenGLES三种抗锯齿实现案例
2021-12-06
Android使用MediaCodeC与OpenGL硬解码 录制mp4音视频实现源码
2021-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人