今天通过一个小案例,来讲解OpenGL的正背面剔除以及深度测试的应用。 圆环的绘制 我们使用GLTools中的void gltMakeTorus(GLTriangleBatc...
今天通过一个小案例,来讲解OpenGL的正背面剔除以及深度测试的应用。 圆环的绘制 我们使用GLTools中的void gltMakeTorus(GLTriangleBatc...
底层结构 我们通过执行xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fno-objc-arc main.m,将上述...
什么是离屏渲染? 离屏渲染(offscreen-rendering)顾名思义为屏幕外的渲染,即渲染的结果不会直接呈现到当前屏幕上,而是等待合适的时机才会被显示。 正常情况下,...
iOS中的常见多线程方案 GCD GCD中有2个用来执行任务的函数 用同步的方式执行任务dispatch_sync(dispatch_queue_t queue, dispa...
顾名思义,RunLoop就是运行循环,在程序运行过程中循环做一些事情。应用的一些场景: 定时器(Timer)、PerformSelector GCD Async Main Q...
block的本质 block本质上也是一个OC对象,它内部也有个isa指针。block是封装了函数调用以及函数调用环境的OC对象。 我们通过执行xcrun -sdk ipho...
前言 今天使用OpenGL的固定存储着色器渲染正方形,并能通过键盘移动。效果如下: 正方形绘制流程 代码实现:
简单应用 关联对象常用的API如下: 默认情况下,因为分类底层结构的限制,不能添加成员变量到分类中。但可以通过关联对象来间接实现。 关联对象的原理 实现关联对象技术的核心对象...
Category的底层结构 在源码的中,我们可以查看到Category的底层结构(objc-runtime-new.h) Category的底层结构是struct categ...
KVO KVO的本质是什么? KVO的全称是Key-Value Observing,可以用于监听某个对象属性值的改变。主要使用下面几个方法: 我们自定义一个Person对象,...
图形API简介 OpenGL (Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象成为一个OpenGL的对象,对这些...
本文主要通过三个问题,一起探寻一下OC对象实现的底层原理。 一个NSObject对象占用多少内存? Objective-C的本质 我们平时编写的Objective-C代码,底...
排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任一序列,重新排列成一个按关键字有序的序列。由于待排序的记录数量不同,使得排序过程中设计的存...
什么是哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录...
平衡二叉树(Balanced Binary Tree 或 Height-Balanced Tree)又称AVL树。它或者是一颗空树,或者具有下列性质的二叉树: 它的左子树和右...
查找表是由同一类型的数据元素构成的集合。由于集合中的数据元素之间存在着完全松散的换洗,因此查找表是一种非常领边的数据结构。 对查找表经常进行的操作: 查询某个特定的数据元素是...
拓扑排序 对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边 ∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称...