自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时光的博客

此后惯看风花雪,不问春夏与秋冬

  • 博客(87)
  • 收藏
  • 关注

翻译 Metal programming guide (二)

Command Organization and Execution Model在Metal 架构中,MTLDevice协议定义了代表单独GPU的接口。MTLDevice协议支持为了创建其他特定设备对象,如buffers 、textures,或者为了编码和排列(encoding and queueing)那些要被提交到GPU运行的渲染和计算命令,而去查询设备属性的接口.一个command qu...

2019-07-05 16:01:51 755

翻译 Metal programming guide (一)

At a Glancethe command submission model:命令提交模型the memory management model:内存管理模型the use of independently compiled code for graphics shader :独立编译图形着色器data-parallel computation functions:数据并行计算函数...

2019-07-05 09:43:34 414

原创 OpenGL之FBO

####一:概述在OpenGL rendering pipeline中,原始数据和纹理经过处理过后最终会被渲染到屏幕上成为2D像素。OpenGL pipeline的最终渲染目标就是framebuffer(帧缓存)OpenGL 使用作为渲染目标的帧缓存是被window 系统生成管理的,这个默认的framebuffer被称为window-system-provided framebuffer....

2018-12-06 19:56:13 1288

翻译 Core Animation 系统学习第一篇

Core Animation 位于 AppKit 和 UIKit的底层,并被紧密的集成到视图工作流中。Core Animation 本身并不是绘图系统,它是一个合成与操作您app内容于硬件中的基础框架。而在该框架中最为核心的便是 layer objects (层对象),用来管理和操作您的内容。一个layer 捕捉您的内容到位图中,这样有利于被视图硬件便捷地处理。在大部分app中,layers被...

2018-06-04 16:13:39 266

翻译 Dispatch Sources

在你需要与底层系统交互时,就要做好该交互任务会持续一段时间的准备了。无论是内核抑或是其他系统层级的背景改变都肯定会费时,与把任务放进自己进程中相比较。于是,许多系统库都提供了异步接口来允许个人代码提供系统请求然后在请求在被处理的同时可以做其他的任务。GCD通过提供blocks 和 dispatch queues来使个人可以提交请求并取得结果报告。关于Dispatch SourcesDi...

2018-05-08 11:24:49 438

原创 阅读YYKit之YYImage实现gif展示

思路YYKit中关于animatedImage中的gif图片处理过程首先,gif图片属于YYKit规定的YYImage类型,而通过YYImage利用YYImageDecoder获取这个图片的帧数的信息,由YYImage遵循的YYAnimatedImage协议返回给YYAnimatedImageView.与本身是多张图片的图片数组YYFrameImage不同。阅读YYKit之YYAn...

2018-04-25 10:34:55 4833

翻译 IOS 视频硬编码H.264

前言在学习了落影大神的相关博客及WWDC有关编解码的视频后准备总结下所思所得,先写有关硬编码的内容之后会再写关于硬解码的内容.概念简要众所周知,我们平时在网络上收看视频会经历视频编码及解码的过程.编码是为了减小视频网络传输消耗的资源,解码是为了将压缩后的视频恢复成可以观看的格式,目前编码大多采用的是H.264规格.H.264是一种广为认可的编码格式, 包含由一系列NALU组

2017-12-28 17:09:41 2381

原创 AR学习日记(1)

前言:最近大致看了下风风火火的ARKit,初步了解了其中的一些概念和使用方法,这里简单记录下,之后会随着本人的逐渐学习再更新相关学习体会。AR (Augment Reality)顾名思义“增强现实”(这里就不再多做解释了,如果对这个概念不太了解的朋友可自行上网查阅相关信息),利用xcode9可以选择创建一个新的AR项目,在项目文件中可发现,AR项目自动引入了SceneKit和 ARKit,其实

2017-09-25 16:44:56 475

原创 CoreBlueTooth 蓝牙开发相关总结

前言:最近项目中用到了蓝牙和公司硬件通信,所以入手研究了一下相关知识,特此记录下.利用CoreBlueTooth解决蓝牙通信前提是硬件外设需是蓝牙4.0及其以上规格设备.@property (nonatomic, strong) CBPeripheral *peripheralBLE; //外设@property (nonatomic, strong) CBCentralMa

2017-09-20 17:33:35 373

转载 AVFoundation之视频编辑组合

前言:AVFoundation 在视频编辑上提供了一系列的API来创建非线性,无损的应用程序。我们可以利用AVComposition来实现有关资源组合的功能。       一个组合就是将其他几种媒体资源组合成一个自定义的临时排列,再将这个临时排列视为一个可以呈现或处理的独立媒体项目。如AVAsset对象,组合相当于包含了一个或多个给定类型的媒体轨道的容器。AVComposition 中的轨道都是A...

2017-09-19 21:07:35 820

转载 AVFoundation视频缩放研究

前言:IOS7之前是通过AVCaptureConnection的videoScaleAndCropFactor属性来实现图片拍摄的缩放,而且对预览层也不能实时更新,基于此,从IOS7开始视频缩放主要依靠AVCaptureDeviceFormat来实现。重点:       IOS7为AVCaptureDevice提供了videoZoomFactor的属性,用于控制捕捉设备的缩放等级,最小值为1,最大...

2017-09-13 22:38:43 1080

原创 GPUImage学习日记(4)之添加文字水印

前言:利用GPUImage可以给图片或者视频添加水印,大致分为三种水印:视频水印,图片水印,文字水印。其中图片水印与文字水印更为相似。本文结合具体实例来讲解录制视频时添加文字水印的实现过程。大致思路:利用GPUImageUIElement 创建相关水印(文字/图片水印)创建相关GPUImageVideoCamera及GPUImageMovieWriter对象给GPUImageVid

2017-09-12 21:23:01 1890

转载 基于利用AVFoundation 解决视频文件边下边播简析

简介:现阶段下主要利用AVFoundation解决视频文件边下边播的问题.其大致思路是1.AVPlayerItem 是利用相应的AVURLAsset资源创建的2.根据媒体资源URL创建AVURLAsset时需要对url进行修改,以便确保下一步的实施.3.将asset的resourceLoader设置代理对象,代理对象有必要实现其中相关方法.下面根据源码一步步讲解具体实现方法 self...

2017-09-11 21:45:29 679

原创 OpenGL ES 学习日记(1)

简介:OpenGL ES 运行跨越CPU , GPU 之间,协调两个内存区域之间的数据交换。关于OpenGL ES 缓存       OpenGL ES 为两个内存区域间数据交换定义了缓存的概念,缓存是指图形处理器能够控制和管理的连续RAM,程序从CPU的内存复制数据到OpenGL ES  的缓存。在GPU取得一个缓存的所有权以后,运行在CPU中的程序理想情况下将不再接触这个缓存。这样就意

2017-08-31 22:16:30 310

原创 GPUImge学习日记(3) 之滤镜组合使用

简介:我们常常遇到需要叠加使用滤镜的业务需求,比如一个相机app里既需要素描效果的同时又需要周围阴影效果以突出中间图像.这就需要本文介绍的有关滤镜组合使用的内容.GPUImage 中关于滤镜组合使用有两种方法:GPUImageFilterGroup与相应filter(GPUImageFilter)相结合将需要使用的filter相累加第二种方法以后另讲,这里主要讲一下有关使用GP

2017-08-25 17:20:53 448

原创 GPUImage学习日记(2)之视频录制

简介:GPUImage 关于视频录制主要类就是GPUImageVideoCamera,本文就视频录制添加滤镜保存等都做一个简单说明.大致思路:初始化GPUImageVideoCamera并添加音频输入输入设置添加展示ImageView 和 滤镜设置(如:GPUImageVignetteFilter)初始化GPUImageMovieWriter数据写入方法录制结束移除GPUImage

2017-08-24 15:55:05 306

原创 GPUImage学习日记(1)

简介:GPUImage 是基于GPU处理图像的一个开源库,对图像处理有巨大优势。引用方式:可直接把源码拖入项目也可直接引用静态库文件。通过github官方介绍,简单写了个demo。大致思路如下给GPUImageStillCamera添加滤镜GPUImageSketchFilter给filter添加输出imageView 即GPUImageView最后将输出界面添加到视图即可

2017-08-23 21:32:11 426

原创 DWURunLoopWorkDistribution源码解读

简介:IOS 合理利用Runloop可高效率利用内存,优化程序性能。DWURunLoopWorkDistribution就是一个合理利用runloop来高效率显示tableview的例子。其不仅包含runloop也包含了runtime的一些内容。关于runloop主要方法+(void)_registerRunLoopWorkDistributionAsMainRunloopOb

2017-08-20 16:39:05 718

转载 IOS路由设计之JLRoutes

简介:对于一个业务逻辑复杂的应用,为更好实践组件化开发,设计一个优秀的路由层就显示的很重要。本文就JLRoutes实现页面之间MVVM模式下相互跳转设计思想及使用方法进行探讨。JLRoutes 把页面组件等看作是请求资源URI,可把相应的视图转化为JLRoutes与程序配置的URL scheme组合起来以字典形式加入routes中。所以需要在appdelegate文件中设定相应访问权限- (BOO...

2017-08-19 16:36:28 1654

转载 IOS 16进制字符串实现Java parseInt()算法及其相关

JAVA专业字符串按进制转换补码获取其值的算法直接用parseInt()一句代码即可,OC的话可按照补码的原理一步步实现.补码:正整数的补码是本身,负数的补码是除符号位全部取反再加一.如题,要想实现算法,将字符串按照十六进制每两位进行求补码运算获取byte数组即可. +(int )HexToByte:(NSString *)hexString{ NSInteger len...

2017-07-21 11:46:18 566

原创 React Native ---fetch 之GET请求带参数

网上关于其GET请求的用例全是没有带参数的,带参数的又全部是POST请求下面给出带参数的做法.export function get(url,params){ if (params) { let paramsArray = []; //拼接参数 Object.keys(params).forEach(ke

2017-06-08 17:14:08 30246 1

原创 仿美团项目学习源码分析(3)--数组加key

Warning :each child in an array or iterator should have a unique "key" prop.在看源码的时候不清楚key是干什么用的,就将其去掉重新运行,发现虽然并没有造成影响程序稳定运行的问题,但是也给了警示,如上方.代码复原后就一切正常了.下面贴出该代码: let menuView = (

2017-06-07 14:58:47 370

原创 仿美团项目学习源码分析(2)---JS之slice()方法

在看项目源码的时候发现一个算法有点问题,但是深入研究后只能说这个算法可以执行并得到正确结果,算法有多种实现方式,这也是一种思路.源于我对JS语法没有深入了解导致之前误以为算法有误,这里记录下.代码如下:for (let i = 0; i < pageCount; i++) { let length = menuItems.length < (i * 10) ? me

2017-06-07 11:22:22 1011

原创 仿美团项目学习源码分析(1)

"只有不断向比自己优秀的人学习才能有所进步",这是我一直以来所相信的,无论是工作还是为人.作为程序员最直接的学习莫过于源码学习,最近在研究素敌的仿美团项目,觉得有意思的点会记录下来,新的起点从今天开始吧.项目中封装了NavigationItem组件,其中let icon = this.props.icon && 刚开始没看明白,额,有些不好意思的说,其实就是给了个约定只有在icon确实存在

2017-06-02 16:44:35 2088

原创 iOS 错误记录

Member reference type ‘struct objc_class *‘ is a pointer; maybe you meant to use ‘->‘?之所以会出现这个错误提示,是在类方法里使用了self,这是错误的写法,因为这时尚未初始化.

2017-05-25 15:11:22 2626

原创 CGContextRef 堆栈保护操作

CGContextRef 堆栈保护操作

2017-05-05 15:59:04 362

转载 CGContextRef 与CGMutablePathRef画图用法

As all know ,CGContextRef 与 CGMutablePathRef 都是画图工具,其中CGMutablePathRef 可与CAShapeLayer或CGContextRef配合使用.CGContextRef用法获取当前图形上下文: CGContextRef context =UIGraphicsGetCurrentContext();设置线条颜色:CGContextSetS...

2017-05-04 12:50:37 3288

转载 iOS 弹性动画之弹出分享菜单的实现

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)op...

2017-05-03 16:07:20 4112

转载 [CATransaction flush] 作用详解

众所周知,CATransaction 是核心动画类中的事务类,负责将图层树的修改作为原子更新到渲染树.其分为隐式事务和显式事务.我们平时所做的针对layer层的操作都是隐式事务,如self.view.layer.backgroundColor = [UIColorredColor].CGColor;显式事务为运用begin ,commit方法创建使用.显式事务在同时设置多个图层的属性的时候(例如当...

2017-04-11 18:08:12 2581

转载 ios calendar 结构体使用

calendar 是用于存储计算时间的结构体,可根据具体使用确定其单位,判断依据等信息。其中Identifier 定义如下,可知有阳历阴历等计算时间的方法,可根据实际情况选择。 public enum Identifier { /// The common calendar in Europe, the Western Hemisphere, and elsewhere....

2017-04-09 17:44:36 546

原创 Thread 1:EXC_ARITHMETIC(code=EXC_I386_DIV,subcode=0x0) 错误提示

Thread 1:EXC_ARITHMETIC(code=EXC_I386_DIV,subcode=0x0) 错误提示

2017-03-31 17:06:37 5041

原创 也谈NSTimer的使用

先来看NSTimer invalidate()方法的官方说明Stops the timer from ever firing again and requests its removal from its run loop.This method is the only way to remove a timer from an NSRunLoopobject. The NSRunLoop...

2017-03-31 13:15:28 206

转载 textField 限制输入数字

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { return [self validateNumber:string];}- (BOOL)validateNumber:(NSStr

2017-03-24 14:36:52 349

转载 iOS 指定位取反

一直以为但凡做开发(不管哪种语言),都会在基础阶段学习位运算,但是今天我的一位同事(能力挺好的)问了我关于位运算的问题,发现可能有些同志真的对位运算不太熟悉,这里记录下如何进行实现指定位取反操作.指定位取反直接用异或(^)运算符就可以了,比如a 的第十位取反,a^(1&lt;&lt;9).就可以了.其中原理是在异或运算中1会对值进行变换,0不会. ...

2017-03-17 15:56:03 2257

转载 JS存储方式介绍

本文来总结下JS的存储方式:Flash9.0持久化存储(即Flash共享对象,SO)Gears(源于Google)H5定义的DOM存储(即localStorage 和sessionStorage)IE的userdata行为cookie 1.       Flash共享对象(SO)的运作模式和HTTP的cookie类似,也是基于域来存储和访问的,从Flash7.0后,Adobe公司就将沙箱保护作为了...

2017-03-06 14:55:38 905

转载 cookie的正确使用

前言cookie是一个带有过期时间,域名,路径的小型的键值对,之所以需要提供这些信息,是为了确保正确的服务器能读取到相关的cookie.虽然可以通过JS访问cookie,不过它却不是基于脚本的:它是HTTP服务器提供的机制.故而,客户端和服务器端都能访问它. 详解cookie       和其他浏览器元素类似,cookie也是可通过document对象访问.可通过提供cookie键...

2017-03-06 12:00:28 642

转载 Runtime之关联对象简述

关联对象,用于解决需要在对象中存放相关信息的问题.1.key 可以给某个对象关联许多其他对象,这些对象通过“键”来区分。2.objc_AssociationPolicy(存储策略)存储对象值时,可以指明“存储策略”,用以维护相应地“内存管理语义”。如下表中列出了该枚举值,同时还列出了与之等效的@property属性:假如关联对象成为了属性,那么他就会具备对应的语义。关联类型等效的@property...

2017-02-15 10:59:01 254

转载 CABasicAnimation之animationWithKeyPath方法

CABasicAnimation中可以用animationWithKeyPath类方法来创建动画.其中keyPath的值有以下若干.transform.scale = 比例转换transform.scale.x = 闊的比例转换transform.scale.y = 高的比例转换transform.rotation.z = 平面图的转换opacity = 透明度margin = 布局zPositi...

2017-02-13 15:50:08 1434

转载 利用NSOperation进行线程操作

用惯了GCD就人云亦云的对NSOperation有各种各样的抱怨,但NSOperation也有其独到的优势.  //创建NSInvocationOperation对象,封装操作 NSInvocationOperation *operation1=[[NSInvocationOperation alloc]initWithTar...

2017-02-09 15:42:13 300

转载 CAKeyframeAnimation

CAKeyframeAnimation跟CABasicAnimation的区别是:CABasicAnimation只能从一个Value变到另一个Value,而CAKeyframeAnimation会将这些数值保存在数组中或者以路径(path)形式保存.另附代码如下:- (instancetype)initWithFrame:(CGRect)frame withSuperView:(UIView *...

2017-02-07 11:01:56 876

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除