- 博客(25)
- 收藏
- 关注
原创 OpenGL ES--碰碰车案例学习
一、简单介绍最近也学习了下碰碰车的案例,这个案例是github上有人上传的案例:下载地址:案例地址,这里主要是做一个简单的总结,先看下效果把,主要就是车的旋转效果的制作以及碰撞检测,还有就是第三人称视角转换为第一人称视角的集合品。先看下效果图第三人称视角第一人称视角每次碰撞到另一个车的时候,或者是撞到边界的时候,都会重新的去调整车头一直朝向前,也就是说我们的方向盘是会一直出现在我们的视野前面的,也...
2018-03-30 01:29:04 779
原创 关于四元数
一、简单介绍花了点时间看了下四元数做旋转的部分,目前也只会最最基本的用法,也想记录一下,以供日后参考和修改。先简单的介绍下复数平面,复数平面可以理解成是复数集存在的一个2D平面。这个平面有两个轴分别是实轴和虚轴,其中横轴表示的就是实轴,而虚轴表示的就是纵轴这样就可以将复数(x,y)给解释为2D向量了。下面这个就可以看成是一个复数平面,由复数p绕着原点旋转θ度得到p'点,我们可以通过p和q(cosθ...
2018-03-28 16:36:30 582
原创 关于欧拉角的问题
一、简单介绍自己主要做一个知识记录,想着学了还是要写点东西的,首先我们可以把欧拉角看成是描述方位的一种方法,我们可以用欧拉角来表示旋转,也可以用四元数,以及用矩阵来表示旋转。欧拉角是一种常用的描述方位的方法。在这里简单的介绍下方向和方位的区别,方位主要描述的就是物体的朝向,而方向只是其实相当于一个指向。一个3D的物体自转就会有方位的变化。欧拉角的基本思想就是将角位移分解为绕三个互相垂直轴的三个旋转...
2018-03-27 23:34:59 2853 1
原创 卡通着色效果
一、简单介绍虽然自己学的都比较浅,但是还是想通过文字来记录下。首先先介绍下卡通着色的效果,为什么要进行卡通着色,卡通着色的目的就是为了让被着色物体显得过渡的不要那么的好,明暗交界线很明显。卡通着色也叫做非真实渲染技术,利用卡通着色加上描黑边的效果就可以很好的做出一个动画的任务了,就比如说下面的一个喜羊羊的图片。颜色都很分明的。卡通着色将一个一维纹理贴图作为查询表,使用纹理贴图中的纯色去填充几何图形...
2018-03-27 12:54:30 869
原创 通过Phong着色照亮纹理的单元的注意点
一、简单介绍我们在着色器中使用光照来进行对物体颜色值的影响可以是逐个顶点进行的,当然也可以是逐个像素进行的,这样的操作基本都是直接将物体的基本的颜色值和光线的颜色和强度进行相乘,然后得到最终的颜色。这里就像简单的介绍下,如果我们物体有纹理了,怎么办?难道还是直接将纹理颜色和光线的颜色和强度直接相乘吗?二、实战演练我们在堆纹理表面进行光照的时候一定要考虑到的就是,我们这边使用的是ADS光照模型因为A...
2018-03-26 19:32:40 217
原创 GLKit中的GLKViewController控制GLKView实现手动控制glkView:drawInRect
一、简单介绍在ios平台下,苹果给我们封装好了GLKViewController这样的一个类,简化了我们通过OpenGL ES渲染图形的工作。在这里就简单的介绍在如何通过手动调用GLKView的display方法去控制glkView:drawInRect的调用。先来看下一个GLKViewDelegate的代理方法,我们在使用GLKViewController的时候如果我们没有给GLKView设置代...
2018-03-26 10:51:33 4066
原创 C语言中的inline函数
一、简单介绍这里想起来还是要总结一下关于inline关键字的问题,尽管C和C++有着自己的语音规范和标准,但其实不同的编译器对有些关键字的实现是不一样的,比如说inline。就好比说在C99标准中inline :用于同一c/cpp文件内部被调用处展开;对外部文件来说函数不可用。而GCC编译器的实现则是inline :对同一c/cpp文件,函数将会在被调用处展开;对外部文件,此函数等同于"exter...
2018-03-25 15:44:35 1935
原创 冯氏光照模型--镜面光的计算
一、简单介绍冯氏光照模型是由三部分组成,一个是环境光,一个是漫射光,还有一个就是镜面光。冯氏光照模型的提出主要就是为了去做出光照效果来影响物体的表面的颜色的。冯氏模型阐述了镜面光的计算依赖于观察者的观察方向和反射光向量之间的夹角,所以下面就会去去简单的介绍下镜面光的概念。高强度的镜面光趋向于它所照射的表面上形成一个亮点,也就是镜面亮点。这个镜面两点的应用的话,其实就好比现实世界中总是存在金属的,金...
2018-03-25 01:35:16 2339 1
原创 Lambert光照模型和Gouraud着色以及Phong着色的区别
一、Lambert模型这里简单的介绍下Lambertian漫反射模型其实就是假设反射光均匀分布在所有方向,反射光照的强度与表面法线和光源方向夹角的余弦值成正比。也就是可以理解成受光面所受的光照都是均匀的,不会因为表面粗糙而有所影响。不能反映粗糙度带来的变化。也就是说无论我们从哪个方向进行观察,物体表面的光照的表现都是不变的。Lambert对应的公式为:vResult = vDiffuseMater...
2018-03-24 20:02:27 6036
原创 OpenGL中法线坐标的转换
一、简单介绍我们都知道如果我们要将一个物体从本地坐标系变到视觉坐标系的话都是要通过模型视图矩阵来进行变化的,我们的光照效果是在视觉坐标系中进行实现的,因为观察者的位置其实是决定了光照的效果的,在我们开启光照功能的时候,法线是决定了顶点或者是面上所接受到光照的多少的,就比如说我们要确定一个指定顶点上的光线的强度的时候,如果我们使用的是漫射光的话,漫射光是需要两个变量的,一个就是光源的方向,还有一个就...
2018-03-23 20:49:12 1290
原创 XMPP实现动态刷新好友列表
一、简单介绍最近学习了下ios端的XMPP的框架,发现了其有一个很好的机制,我可以在一个客户端如果去删除用户指定好友,然后发送消息到另外一个客户端,然后另外一个客户端由于它是把好友列表缓存到sqlite数据库中的,所以我们再用一个NSFetchedResultsController类去请求获取数据,这个类的话其实是每当有数据插入,删除,更新或者是移动了,NSFetchedResultsContro...
2018-03-21 19:12:46 262
原创 操作系统概念习题
一、基本介绍1、操作系统是对计算机资源进行管理的软件。2、从用户的观点来看,操作系统是控制和管理计算机资源的软件。3、操作系统的功能是进行处理机管理、存储器管理、设备管理以及信息管理。其中处理机管理其实就包含了CPU管理进程的调度。4、操作系统中采用多道程序设计技术提高CPU和外部设备的利用率5、操作系统是一种系统软件6、常见的操作系统有Linux,UNIX,Solaris,Windows,Mac...
2018-03-21 12:51:58 2707
原创 C语言中的字符数组
一、 关于字符数组在C语言中其实是没有字符串的概念的需要借助字符数组来存储字符串为了区别字符串,需要在字符数组的末尾添加’\0’,如果我们的数组空间足够的话编译器会自动的帮我们加以此来作为字符串的结束标志,并且不计入字符串长度二、代码实战当我们以下面的方式来把字符串赋值给字符数组的时候char str[5]={"baidu"};此时编译器会报错,如下所示,因为...
2018-03-18 10:04:37 347
原创 苹果官方文档压缩图像的方法
一、简单介绍 苹果的官方文档有一个代码演示了一种支持在有限的内存环境中显示超大图像的方法,方法是将磁盘上的大图像转换为内存中较小的图像。这在原始图像太大而无法按照要显示的要求放入内存的情况下很有用。支持的格式是:PNG,TIFF,JPEG。不支持的格式:GIF,BMP,隔行扫描图像。——[官方文档]下面主要是想记录下这个代码中的一个宏的修改其值的区别,讲道理,之前一直搞也没搞明白,不...
2018-03-16 17:31:48 494
原创 关于苹果系统架构
一、简单介绍最近去了解了下,这部分的知识,目前就记录下这方面的知识点。苹果大致把其操作系统分为四个层次,分别为应用层,应用框架层、核心框架层,还有就是Darwin1、应用层包括用户能接触到的图形应用,比如说 Spotlight(系统自带搜索栏)、Aqua(Aqua是Mac电脑全新用户界面的名字)、SpringBoard(苹果iDevice的桌面) 等。2、应用框架层即开发人员接触到的Cocoa等框...
2018-03-15 15:17:51 3933
原创 利用OpenGL ES在ios上绘制图像
一、简单介绍最近也开始学了自定义着色器程序,来进行图形的渲染,现在就对最基本的用绘制纹理的方式来在设备上显示图片,本篇文章主要都是自己的理解,如有错误尽请指出。废话不多说,先去介绍一下CAEAGLLayer这个类,其实CAEAGLLayer是一个实现了EAGLDrawable协议的层,允许它作为OpenGLES渲染目标。提供了一个OpenGL ES渲染环境。其中GLKit框架中的GLKView的l...
2018-03-14 00:09:26 3850
原创 关于image.scale的问题
引言:这个属性也是之前偶然发现,这边就做下对这个属性的目前已经知道的总结吧。一、解析首先其实image.scale是由我们决定的。经过测试,我们将图片放到这里面的1x、2x、3、位置,其的image.scale分别变成了1,2,3,也就是说,我们把图片拉到这其中的三个不同的位置(1x、2x、3x)的时候,对应的image.scale是不一样的,哪怕我们下面的这个图片是[email protected],如果我们把...
2018-03-12 11:44:02 7014
原创 SDWebImage中的SDImageCache、SDImageCacheConfig
一、概念介绍SDWebImageCache是SDWebImage中的一个缓存类,是拿来缓存数据的,在SDWebImage中分为缓存数据到磁盘以及内存,下面就简单的介绍下它们头文件的内容,其实它们的头文件的内容就是给我们在外面可以自定义去设置的,可以去调用头文件的方法,本身就是这个框架对外的接口,所以我们应该对其的概念应该有一定的了解二、代码实战关于SDImageCache.h文件的内容#impor...
2018-03-11 11:30:33 1654
原创 ios-CGContextDrawImage图形倒置问题
一、简单介绍首先我们应该知道在UIKit中,y轴是向下的。而在Core Graphics(Quartz) 中 y轴是向上。所以其实我们使用CGContextDrawImage来绘图的话,默认是在用户空间下绘制出来的,使用的坐标系是以左下角为原点,y轴向上,x轴向右。二、实战演练所以我们在进行绘制的时候,写了如下代码-(void)drawRect:(CGRect)rect{ //获取上下...
2018-03-10 16:07:12 1861
原创 SDWebImage-解码、压缩图像
一、简单介绍研究了下SDWebImage的源码,借鉴了别人的一些资料,感觉逐渐的明白的一些原理,现在就来记录下。在我们使用 UIImage 的时候,创建的图片通常不会直接加载到内存,而是在渲染的时候默认在主线程上再进行解码并加载到内存。这就会导致 UIImage 在渲染的时候效率上不是那么高效。为了提高效率所以在SDWebImage中就采取在子线程中进行解码图片。这里再介绍下为什么创建图像的时候是...
2018-03-10 11:58:36 3117
原创 SDWebImage-存储图片到磁盘和内存过程
其实在SDWebImage中有一个方法就可以把图片缓存到内存中和磁盘中,还是一样的套路,一个长方法,关于这个函数其实不难代码注解写在里面,可供观看。- (void)storeImage:(nullable UIImage *)image imageData:(nullable NSData *)imageData forKey:(nullable NSSt...
2018-03-09 12:27:57 3828
原创 SDWebImage中UIImageView调用sd_setImageWithURL过程
最近都在研究SDWebImage,也想看看实现,在这边就总结一下关于调用sd_setImageWithURL过程,我觉得在github上面的官网的时序图是要看的,虽然过程有所简化,但其实还是有学习的地方。下面就用代码图片来描述这整个过程已经进入到了UIView的分类中了之后就是先去查缓存再进入queryCacheOperationForKey方法中进行查询然后在load方法里面调用了SDWebIm...
2018-03-07 23:50:28 3106
原创 ios--离屏渲染masksToBounds
最近在看关于离屏渲染,看到网上有很多文章都说只要是设置了圆角加上masksToBounds就会发生离屏渲染,这里纠正一下,首先测试下UIView,我们这里开启了Color Off-screen Rendered,也就是说,这个选项为离屏渲染内容添加一个黄色的叠加层。介绍下masksToBunds的,是类CALayer的属性,如果设置为yes,则不显示超出父View layer的部分UIView代码...
2018-03-07 09:38:36 1279
原创 SDWebImagePrefetcher中的只读属性manager
最近在看SDWebImage源码的时候,偶然发现在SDWebImagePrefetcher中有一个属性是SDWebImageManager *manager,在其的.h文件中是只读的,如下所述而在其内部就是可读可写的属性这就很好的解决了在外部我们不允许修改,在内部我们可以任意进行修改的问题了。如果我们没有这么设置,比如说我们创建了个student类,是只读属性#import <Foundat...
2018-03-06 19:51:22 238
原创 OpenGL纹理和顶点对应,纹理没有在前面导致的结果
最近在研究纹理的时候又发现一个问题,就是设置了纹理坐标和顶点对应的时候,发现了有一块地方莫名的被拉伸了,出现了如下图的情况,其中黑线是我为了方便观察画的原本以为是顶点指定顺序出了问题,因为天花板上的纹理是好的,而地板在第一个三角形绘制的时候上面的纹理边缘被拉伸了。然后又把图形指定的和天花板顺序一样,这样纹理确实没有拉伸了,但是之后又看了下旁边的墙的绘制方式,发现其实和我们地板的顶点的数据是一样的。...
2018-03-01 16:00:17 482
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人