08 2020 档案
摘要:本文主要用来 对 SDWebImage 的整体实现原理和源码进行简单解析。 SDWebImage 架构图: 流程简概: 图片加载流程 一、加载图片流程 加载图片时,首先 图片是在本地缓存还是网络 - (void)sd_internalSetImageWithURL:(nullable NSURL *
阅读全文
摘要:一、Metal 实现视频预览 首先我们知道视频其实就是一帧帧的图片。 渲染业务流程: (注:AVFoundation 有提供的预览图层: AVCaptureVideoPreviewLayer) 0、初始化工作 // 1.获取 MTKView 预览图层 self.mtkView = [[MTKView
阅读全文
摘要:一、Metal 大量顶点数据处理 如上图,setVertexByte: 方法对数据是有限制的 不能大于4K。当大量数据,超过了4K时,我们可以使用 MTLBuffer。 1、MTLBuffer 当顶点数量太多时,对CPU的消耗会增大,尤其在游戏、AI等场景中,为更好的扩展管理 (并不是为了图形图片的
阅读全文
摘要:通过 Metal,实现 渲染颜色到屏幕 和 三角形的绘制 两个简单案例。 一、Metal 使用 Metal Programing Guide 官方文档 类似于 OpenGL ES 的 GLKit, 苹果为开发者提供了 MetalKit 。并对开发者做了以下建议(当然这只是建议,不是必须遵循的规则):
阅读全文
摘要:Metal 简介 与 Metal 编程语言语法。 一、Metal 简介 1、Metal 是 Apple 为了解决 3D 渲染而推出的框架。游戏开发者的新的技术平台,该技术能够为3D图像提高 10 倍的渲染性能。苹果2018年推出 Metal,在此之前一直使用OpenGL ES。 Metal 的2个目
阅读全文
摘要:此案例用来处理纹理的拉伸,并对拉伸后图片进行保存。 拉伸效果: 一、拉伸案例 - 主流程 1、加载原图 2、拉伸区域的滑块处理 -- sliderView 3、图片拉伸绘制 4、保存图片到本地相册 二、拉伸,顶点/纹理坐标处理过程 1、手动指定拉伸区域、选取合适的图元装配方式 8个顶点,通过方式 G
阅读全文
摘要:最终实现滤镜效果: 详细Demo文章见底部 一、缩放 1)实现思路:修改顶点坐标和纹理坐标的对应关系。纹理坐标不变的情况下,对顶点坐标进行放大. 缩放过程: 1、设置一次缩放效果的时长 duration 0.6 2、设置最大振幅 maxAmplitude 0.3 --> 放大程度 [1 ~ 1.3]
阅读全文
摘要:图片显示到屏幕上由CPU/GPU 协作完成: CPU:计算视图 frame 、图片解码,需要绘制的图片通过数据总线交给 GPU。 GPU:纹理混合、顶点变换与计算、像素点的填充计算、渲染到帧缓冲区。 iOS双缓冲机制:2个帧缓冲区 纹理图片滤镜处理,通过修改片元着色器实现滤镜效果。 效果: 一、灰度
阅读全文
摘要:案例:利用 GLSL 实现分屏滤镜 --> 2、3、4、6、9分屏。 分屏滤镜简单思路:绘制原始纹理图片 -- 绘制分屏 --> 1、片元着色器 来修改设置每个像素 --> 2、重绘 实现效果: 一、绘制原图过程不变: 1、创建图层:CAEAGLLayer 2、创建上下文 EAGLContext 3
阅读全文
摘要:一、索引绘图 若要绘制下图目标图形,按普通处理方式则需要一个个进行N多个三角形的顶点处理。图中所用到顶点重复性很高,其实只有7个不同的顶点 --> 索引绘图 --> 将顶点按索引信息进行面的绘制 --> 索引数组:{1,2,3}{3,2,4}{4,2,7}{7,2,5} {4,7,2}{2,7,6}
阅读全文
摘要:案例:使用编译链接自定义的着色器(shader),用简单的 glsl 语言来实现顶点、片元着色器,绘制图形并进行简单的变换。 思路: 1.创建图层 2.创建上下文 3.清空缓存区 4.设置 RenderBuffer 5.设置 FrameBuffer 6.开始绘制 Demo 一、准备工作 步骤 1~5
阅读全文
摘要:一、基础 1、OpenGL ES 不同版本 OpenGL ES 1.X:针对固定功能流水管线硬件 OpenGL ES 2.X:针对可编程流水管线硬件 OpenGL ES 3.X:OpenGL ES 2.0 的扩展 2、EGL的主要功能: 1. 和本地窗⼝系统(native windowing sys
阅读全文

浙公网安备 33010602011771号