7.8k words 7 mins.

Android Surface 的渲染机制 # 1.Surface 是什么? 1234Handle onto a raw buffer that is being managed by the screen compositor.A Surface is generally created by or from a consumer of image buffers (such as a SurfaceTexture, android.media.MediaRecorder, or android.renderscript.Allocation), and is handed to some...
541 words 1 mins.

Android 启动分 5 个阶段: # BootLoader 上电后引导芯片从指定位置加载 bootloader 程序,初始化 ram, 然后启动 linux 内核 # Linux 内核 启动 linux 内核后,会初始化内存管理单元和缓存,进程管理。 加载驱动:Display Driver,Camera Driver, Input,Binder Driver 等。 最后启动 init 进程 # init 进程 linux 内核启动中创建,是内核创建的第一个用户进程,pid 为 1,执行分两个阶段,分别在从内核态和用户态执行。 第一阶段,设置环境变量,创建挂载文件系统,设置...
2.3k words 2 mins.

# Start # 1.ExoPlayer 起播时序图 # 2.ExoPlayer 的初始化 先看看 ExoPlayer 的初始化 1234567891011121314151617181920212223242526272829303132333435363738394041protected StyledPlayerView playerView;private DataSource.Factory dataSourceFactory;void onCreate(@Nullable Bundle...
2.1k words 2 mins.

LeetCode 第 17 题 Java 实现 电话号码的字母组合 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465class Solution { static Map<String, String> map; static { map = new HashMap<String, String>();...
758 words 1 mins.

# HLS 协议简介 全称 HTTP Live Streaming,是由苹果公司开发的用于支持在线音视频播放的流媒体协议,该协议是基于 HTTP 协议实现的。 HLS 是由 m3u8 配置文件和 TS 分片文件组成的。 # m3u8 m3u8 是 m3u 文件的一种,是 HLS 定义的配置文件,客户端从该文件中解析出播放所需的元数据后,从中寻找可用的媒体流的地址,然后下载媒体流进行播放。 m3u8 其实是一个播放列表文件 playlist,里面记录了可用的媒体片段信息,m3u8 文件支持嵌套。 m3u8 文件结构: EXTM3U 文件第一行配置指定这是一个 M3u8...
2.9k words 3 mins.

# OpenGL 中的 Texture(纹理) 翻译自 Android 课程 3:基础纹理 英语好的小伙伴可以直接去这个网站学习 OpenGL ES2 # 纹理介绍 纹理映射技术是构建一个真实 3D 世界最重要的方式。没有纹理映射的话,所以的东西都是光滑的渐变,看起来像人造的,像是 90 年代的控制台游戏 首先大量使用了纹理技术的游戏,比如 Doom 和 Duke Nukem 3D,通过添加的视觉影响能极大的增强了游戏的真实性。 # 纹理坐标系 在 OpenGL 中,纹理坐标系使用(s,t)来代替(x,y)坐标,代表纹理上的点,最终映射到几何形上。另外需要注意的是纹理坐标系和其他的...
795 words 1 mins.

# OpenGL ES 中的坐标变换 # OpenGL ES 中的坐标系 世界坐标系 纹理坐标系 物体坐标系 眼坐标系或相机坐标系 裁剪坐标系 屏幕坐标系 # 世界坐标系 世界坐标系是 OpenGL 中描绘三位空间的坐标系 # 纹理坐标系 一种假象的坐标系 可以叫 UV 坐标系 一个纹理的纹理坐标左上角为(0,0),右下为(1,1),坐标用浮点数表示 [外链图片转存中...(img-RtLrvTin-1648314227884)] # 物体坐标系 相对于单个物体的坐标系 # 相机坐标系 相机坐标系是以相机为原地,相机观察方向 z 轴向内为正方向的坐标系 # 裁剪坐标系 将相机坐标系乘以...
5.2k words 5 mins.

# OpenGLES2.0 中的光照 翻译自 Android 课程二:环境光和漫反射光 # 1. 什么是光? 世界没有光就会什么也看不到,我们将无法感知这个世界活着物体。 在真实的世界里,光是由无数的光子聚合在一起形成的,它从一个光源出发,经过无数时间,最后传递到了我们的眼睛里 我们应该如何用计算机图像模拟光呢,现在有 2 种热门技术可以实现:光线跟踪和栅格化。光线跟踪通过数学计算跟踪真实的光线,能给出十分准确和真实的结果,但是不足之处是模拟所有的光线十分消耗计算资源,并且实时渲染速度很慢。由于这个限制,大多数的实时计算机图像使用的是栅格化技术,通过接近结果模拟光线。 # 2....
495 words 1 mins.

#Learn the Matrix Class in Android 参考:GcsSloop 的博客 # 1.Matrix 是 Android 中 Graphics 包下的一个类,主要用来对图像进行平移、缩放、旋转、透视、错切等操作。 Matrix 对象实际是一个 3x3 的矩阵。每个值都有不同的用处: mScalaX mSkewX mTransfX mSkewY mScalaY mTransfY mPersp0 mPersp1 mPersp 2 scalax, scalay 用于缩放 skewx,skewy 用于错切 transfx,transfy...
503 words 1 mins.

# Shell Sort ##1. 介绍 希尔排序是插入排序的一种,它的步骤如下: 1232.对这些分组内的项进行单独的直接插入排序。3.当每个组内的排序完成后,再将整歌序列按另一个更小的Gap来进行分组。4.重复2、3,直到gap的值变为1,对整个序列进行一次直接插入排序。 ##2.Gap 的选值 gap 的选值可以只用最简单的,每次都区 gap/2,第一个 gap 取 arr.len/2。也有一些更加效率的选值方式,此处不提了。 ##3. 代码 123456789101112131415161718C语言: void shellSort(int* arr,int...