DearMiku

DearMiku

海纳百川 有容乃大 壁立千仞 无欲则刚

RXSwift源码浅析(一)
RXSwift源码浅析(一)简述最近老大给了个新项目,我打算用Swift写.原来OC用的RAC,换到Swift自然框架也想试试新的,就用了RXSwift,对于这两个框架,我都是会用,但不解其中的原理,正好最近需求没下来,就研究了研究RXSwif,把自己的收获分享一下,文中要有不准确的地方还望大家多多指正~ 关于RXSwift是什么和怎么用我就不废话了,网上资源很多,本文先从Observable实现原理入手,旨在以小见大,后面的Single什么的自然举一反三~ 使用Demo下面是一段简单使用Observable的代码 123456789101112let numbers: Observab...
OpenGL ES on iOS --- 光照进阶
简述本文记录我记录我学习 坐标体系和矩阵转换的过程,加深学习便于后续查询,可能有些描述不够准确,或者内容不够充实,还请多多指正,共同学习. 光源分类在基础光照时,学习了光照对物体的作用,也就相当于物体的材质,这次主要说 现实生活中的光源 平行光当光源无限远时,从其发射过来的的光可以近似的看做平行光(例如太阳);这时 光线的方向都是一致的. 1234567891011121314151617181920212223242526272829303132float ambientStrength = 0.3; //环境因子 float specularStrength = 2.0; ...
OpenGL ES on iOS --- 基础光照
简述本文记录我记录我学习 坐标体系和矩阵转换的过程,加深学习便于后续查询,可能有些描述不够准确,或者内容不够充实,还请多多指正,共同学习. 颜色一个没有Alpha通道的颜色可以用一个3维向量来表示 例如 glm::vec3(1.0,1.0,1.0); 表示白色. 在现实世界中,一个物体的颜色是它反射的颜色导致的, 例如我们将纯红光 照射在纯绿物体上, 因为红光都被吸收,所以显示为黑色. 将吸收反射的过程用向量表示出来 123glm::vec3 lightColor(0.0f, 1.0f, 0.0f); //绿色光源向量glm::vec3 objColor(1.0f, 0.5f, 0.31...
OpenGL ES on iOS --- 坐标系统与矩阵转换
简述本文记录我记录我学习 坐标体系和矩阵转换的过程,加深学习便于后续查询,可能有些描述不够准确,或者内容不够充实,还请多多指正,共同学习 矩阵变换我们将物体坐标进行一系列变换,达到自己期望的位置,需要使用到矩阵.先说一下矩阵的公式.这里我是本着了解的心态去学习的,因为已经有趁手的数学工具了,把重要的学完~ 我会再来研究这里的. 矩阵相乘这是一个简单的矩阵相乘例子,这是矩阵乘法过程~ 注意: 1, 矩阵相乘不遵守交换律 即 A B ≠ B A2, 只有当左侧矩阵列数 等于 右侧矩阵行数 两矩阵才能相乘. 在我们对坐标进行缩放,位移,旋转 等变换时,我们多用4x4矩阵来进行~ 缩放我...
OpenGL ES on iOS --- 2D纹理
简介纹理是用来丰富我们绘制物体细节的,它可以是一张2D图片(除了图像外,纹理也被用来存储大量数据,传递到着色器上),就像贴图一样贴在绘制的物体上. 纹理属性纹理坐标为了将纹理映射到绘制的物体上,我们需要指定 某个顶点对应着 纹理的那个位置. 通过纹理坐标,标明顶点从纹理图像那一部分采样,之后在图形的其它片段进行片段插值. 纹理坐标系和顶点坐标系有所不同,顶点坐标系 (0,0)点位于窗口中心. 纹理坐标系 (0,0)点位于 纹理左下角. 顶点坐标系 纹理坐标系 纹理环绕方式当我们将顶点位置设置到纹理坐标之外时,则需要设置纹理环绕方式 来显示纹理图案 环绕属性 效果 GL_RE...
Opengl ES 3.0 on iOS--- 统一变量(Uniform)和统一变量块(UBO)
简介Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。 首先,uniform是全局的(Global)。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问。第二,无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新。 单独统一变量声明uniform vec3 color 赋值12345//获取指定统一变量的locationint vertexColorLocation = glGetUniformLocation(_prog...
Opengl ES 3.0 on iOS -- EAGLContext
概述EAGLContext对象是管理OpenGL ES渲染上下文,若想使用OpenGL ES 进行绘制工作,则必须一个上下文对象. API初始化12- (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api;- (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api sharegroup:(EAGLSharegroup*) sharegroup NS_DESIGNATED_INITIALIZER; 参数: api 表示将要使用的OpenGL ES 版本. kEAG...
Opengl ES 3.0 on iOS--- HelloWord(绘制彩色矩形)
简介本文记录了我初学Opengl 绘制彩色矩形的过程,可能我对内容的描述不够准确,还请多多指正 实现配置图层123+(Class)layerClass{ return [CAEAGLLayer class];} 将当前View的Layer替换成 CAEAGLLayer类,opengl的绘制内容也是在该View上显示的. 1234//设置不透明度为YES,因为透明图层性能不好self.layer.opaque = YES;self.layer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKe...
YYAsyncLayer 学习
YYAsyncLayer 学习简介YYAsyncLayer是用于图层异步绘制的一个组件,将耗时操作(如文本布局计算)放在RunLoop空闲时去做,进而减少卡顿. 组件内容YYAsyncLayer主要有3个类. 1, YYTransaction,负责将 YYAsyncLayer委托的绘制任务在RunLoop空闲时执行. 2, YYSentine, 是一个线程安全的计数器,在进行队列分配和任务取消时作为参考使用 3, YYAsyncLayer, 将其替换为View的Layer类,实现异步绘制 YYTransaction+ (YYTransaction *)transactionWithT...
iOS进程信息 -- NSProgressInfo
iOS进程信息 – NSProgressInfo NSProcessInfo *processInfo = [NSProcessInfo processInfo]; //获取运行该进程的参数 NSArray *arr = [processInfo arguments]; NSLog(@"运行该程序的参数为:%@", arr); //获取该进程的进程标示符 NSLog(@"该程序的进程标示符(PID)为:%d", [processInfo processIdentifier]); //获取该进程的进程名 NSLog(@&q...
avatar
杨尚达
好好学习 天天向上