自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 LearnOpenGL - 纹理

纹理©shuan99991. 了解纹理简而言之就是一张图,把他附着在一个物体上,让这个物体看起来更逼真。说白了,OpenGL不就是为了渲染更真实的物体,让虚拟的物体在屏幕上看起来更像一个真实的物件,但是前面说了,计算机绘制就会画点线三角形,而那些特别复杂的形状无非就是成千上万的三角形组成的,完了我们在这每一个三角形上上一上色,贴上贴纸让这个物体看起来更真实,而这些贴纸就是纹理。其实就是让...

2020-04-19 21:48:01 321 1

原创 LearnOpenGL - 向量、矩阵变换

向量、矩阵变换©shuan99991. 矩阵OpenGL在渲染的时候是通过模型视图矩阵和投影矩阵运算得到最终显示的坐标。模型矩阵(Model): 将顶点从局部坐标系转换到世界坐标系中;视图矩阵(View): 将顶点从世界坐标转化到视图坐标系下;投影矩阵(Projection): 将顶点从视图坐标系转换到规范立方体中(即屏幕中);模型视图投影矩阵(MVP) = 投影矩阵 * 模...

2020-04-12 18:52:45 350

原创 LearnOpenGL - 渲染技巧

渲染技巧©shuan99991. 隐藏⾯消除((Hidden surface elimination)先看如下图的问题:出现这种问题的原因在于我们将其背面也绘制出来了,正常来说我们是看不到也不需要看到背面的,所以先看第一种解决办法:油画算法先绘制场景中的离观察者较远的物体,再绘制较近的物体例如下⾯的图例: 先绘制红⾊部分,再绘制⻩⾊部分,最后再绘制灰⾊部分,即可解决隐藏⾯消...

2020-04-11 21:49:03 239

原创 LearnOpenGL - 渲染基础

渲染基础©shuan99991. OpenGL 渲染架构架构图:Client:客户端,不同于我们理解的,此处指存储在CPU存储器上,在应用程序上执行或在主系统内存执行的代码。譬如,我们写的C\C++代码。Server:服务端,同样的也不是我们理解的服务器,而是GPU端,我们写的shader就是在GPU上执行。总的来说我们就是编写程序通过OpenGL库不断将我们的一些数据发送给GPU...

2020-04-11 15:27:43 156

原创 LearnOpenGL - 专业名词解析

专业名词解析©shuan99991. Context (OpenGL上下文)在应⽤用程序调⽤用任何OpenGL的指令之前,需要安排⾸首先创建⼀一个OpenGL的 上下⽂文。这个上下⽂文是⼀一个⾮非常庞⼤大的状态机,保存了了OpenGL中的各种状 态,这也是OpenGL指令执⾏行行的基础;OpenGL的函数不不管在哪个语⾔言中,都是类似C语⾔言⼀一样的⾯面向过程的函 数,本质上都是对Op...

2020-03-29 15:32:01 340

原创 LearnOpenGL - 搭建Mac环境

搭建Mac环境©shuan99991. 创建Xcode工程,如图:2. 添加OpenGL.framework和*GLUT.framework *,如图:3. 添加libGLTools.a,并配置好头文件将libGLTools.a拖到Frameworks中删除文件:AppDelegate.h、AppDelegate.m、main.m、ViewController.h 、View...

2019-09-15 17:56:01 392

原创 文章标题

高性能的图片圆角一般初学者很多情况下设置图片圆角都是设置UIImageView的Layer,UIImageView* imageView = [[UIImageView alloc]init];imageView.layer.cornerRadius = 10.0;imageView.layer.masksToBounds = YES;但是这回造成离屏渲染耗费性能,下面介绍一种好的处理方式-(U

2016-12-22 17:15:01 305 1

原创 OC-沙箱&归档

沙箱:Documents:最长打交道的文件夹,保存长期有用数据 iTunes会备份此文件夹 Library/Caches: 缓存文件夹 装缓存数据 iTunes不会备份 Library/Preferences:偏好设置文件夹 保存用户偏好设置数据 iTunes会备份 tmp:临时文件夹 装临时文件 此文件夹数据会不定时清除 iTunes不会备份NSLog(@"沙箱的根目录:%@",NSHom

2016-10-10 08:26:23 378

原创 OC-通知&Size Classes

1.Size Classes是什么 为了适配越来越多的不同尺寸的屏幕核心理念 将9块屏幕,进行分类,然后设计界面时,针对这一类别,进行设计,然后,等到程序运行时,系统会根据当前实际设备,判断出当前屏幕属于那一个类别,就加载针对这一类别设计的那个界面2.通知 (Notification) 通过 观察者模式 实现作用: 完成对象之间的消息传递核心理念通知的发送方不知道接收方是谁,只需要

2016-10-09 08:42:47 311

原创 OC-Layout自动布局-AutoResizing&AutoLayout&

1.布局 Layout什么是布局是指在一个视图中,如何摆放它的子视图 (设置子视图的位置和大小)如何布局?方法一: 纯代码布局 (古老的方法)理念:当屏幕发生变化时,自动执行一段代码,在代码中根据新的屏幕大小重新计算各个视图的frame,从而达到重新定位的目的特点:功能强大,非常繁琐-(void)viewDidLayoutSubviews { [super viewDidLay

2016-09-27 19:54:28 847

原创 OC-布局Layout、CoreAnimation层面的动画-CALayer&CAAnimation

CoreAnimation层面的动画CALayer层(显示的基础)UIView核心显示功能就是依靠CALayer实现UIView和CALayer的关系1.UIView显示能力是依赖底层的CALayer实现的,每一个UIView都包换一个CALayer对对象,修改CALayer,会影响表现出来的UIView的外观2.UIView与CALayer最大的不同在于,layer是不能够响应用户事件,U

2016-09-26 19:44:35 1244

原创 OC-UIImage动画&UIImageView动画&UIView动画NSTimer动画

1.UIKit 层面的动画预备:动画 — 帧动画1.1UIImage1.2UIImageView预备:动画 — 补间动画1.3UIView系统为UIView提供的专门用于控制视图实现动画的方法,这些方式以类方法出现的,方法名开头为animate….-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {/

2016-09-24 11:56:22 1351

原创 OC-手势&变形&坐标系bounds、frame、center

1. 手势将用户物理性的触屏操作变成对象存储起来,所有手势的父类 UIGestureRecognizer 系统将一些有特点的触屏操作封装成不同的手势类型包括以下几种:UITapGestureRecognizer 点击UISwipeGestureRecognizer 轻扫UILongPressGestureRecognizer 长按UIPinchGestureRecognizer 捏

2016-09-24 11:46:20 1897

原创 OC-绘图

1切片目的:改图 主要是保证图片的4个边角的弧度不会再放大过程改变 核心理念:将图片横向 切2刀 纵向切2刀,其中四个角部分保持不变,其余部分可以做 拉伸 或 瓷块拼接 第二部分视图 1.绘图 2.变形 3.手势 4.深入坐标系 5.动画 6.布局 7.通知绘图基本概念 图片和显示器 –显示器是如何显示内容? –由晶体组成 -> 发RGB的光,混合后生成不同的颜色

2016-09-22 09:02:49 1332

原创 OC-UICollectionViewController& UITabBarController

1.UICollectionViewController1.是什么 –用于管理视图的控制器,视图可以以多列多行的形式来展示数据,是从UITableViewController演变而来的,所以使用上与UITableViewController非常像 2.与表视图的异同点 –相同点 —UITableViewController —–.tableView (UITableView) —–.de

2016-09-19 20:59:16 604

原创 OC-故事板

1.故事版 Storyboard背景 xib无法快速了解多个xib界面之间的呈现顺序 程序中会有大量的initWithNibName代码 为了解决上述问题,才推出故事版,故事版同时也能大大提高工作效率,但是多人合作开发及后期迭代会比较麻烦启动时,系统自动做了什么? –1.根据target中配置加载Main.storyboard –2.自动创建window对象 –3.自动创建故事版中有启动

2016-09-18 19:16:04 1461

原创 OC-表格的分类&下拉刷新

1.表格的分类按照显示的数据行数是否发生变化,分为两类 –1.动态表格 : 行数不定 –2.静态表格: 行数固定不变 主要应用场景: App设置界面 信息展示界面 实现特点:控制器中会出现大量的硬编码,会出现大量 if switch 这样判断分支语句静态表格主要就是三问一答中使用各种判断语句来规定每一行表格应该如何显示以及每一行长什么样。 静态表格可以通过使用xib减少代码量。 动

2016-09-14 08:28:41 3955

原创 OC-向table中添加数据&table的编辑模式&通过封装自定义cell

1.向表格中增加数据刷新方式一: 全部刷新 reloadData刷新方式二: 只更新一部分 insertRowsAtIndexPaths//刷新tableView [self.tableView reloadData];//刷新最后一行NSIndexPath *path = [NSIndexPath indexPathForRow:self.cities.count - 1 inSection:

2016-09-12 19:40:18 1466

原创 OC-自定义Cell

1.UITableViewCell的组成内容视图 系统版 …. 自定义: 1.创建要显示的控件 2.将创建好的控件以子视图的形式,添加到cell.contentView中即可- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

2016-09-10 17:30:59 1690

原创 OC-UITableView&UITableViewController&UITableViewCell&单元格重用

1.表视图 UITableView作用:实现以一列多行的形式来显示大量的数据的一种视图,父类是UIScrollView 表格的样式: -行之间没有间距,普通样式 Plain 样式 -可以将行分组(区),分组样式Group样式 表格的组成 如何使用UITableView -1.创建实例 并设置 frame 及 样式 -2.添加到 父视图中 -3.设置 tableView的Data

2016-09-10 17:16:31 1016

原创 OC-UIScrollView&UIPageControl

1.UIScorllView 滚动视图作用:用于查看更大范围的图片或文字内容信息的视图 特点:虽然是视图,但本身没有外观,主要是通过记载子视图来完成内容的展示,内部子视图的区域可以大于scrollView占据的控件,通过滑动这种交互方法就能够实现查看超出范围的那些子视图 核心属性: frame:视图的可见区域的大小 contentSeize:设置内容的大小 contentOffset:偏移

2016-09-10 17:00:08 811

原创 OC-UINavigationController 导航控制器

1.多VC之间的切换(多个界面之间的切换) 方式一 两个普通的控制器之间的推出和返回 推出时:使用控制器的 presentViewController 方法, 指定要推出的是谁 返回时:使用控制器的 dismissViewController 方法, 不用指定返回到哪,系统记录着,所以从哪里来的就会返回到哪里去  方式二 使用UINavigationController 导航控制器

2016-09-08 08:57:26 2162

原创 OC-debug调试&界面切换&多界面正反向传值

1.debug调试什么是debug调试 程序报错崩掉或程序不报错,但与期待的效果不符时,如何找出错误的位置 解决理念 找出可能出错的位置,让程序停下来,然后仔细观察在这一时刻,内存中的各个变量中的值是否与期待的相一样,如果发生了不一样的值,那么在进一步缩小范围,查看这个变量为什么不是期待的值如何初步判断这个出错的位置? 猜!依据数据的变化过程,根据界面上的结果,结合着判断出一个可能出错的位置

2016-09-06 21:06:26 1530

原创 OC-UIAlertController& UIStepper& UISlider& UISwitch

UIAlertController警告框(AlertView 位于屏幕中间) 1.创建UIAlertController的实例,创建实例时需要制定一个style参数,将该参数写成Alert样式,则代表创建的是警告框 2.创建界面上的按键 3.将创建好的按键添加到警告框中 4.为AlertController添加文本框 (可选) 5将警告呈现出来操作表 (ActionSheet)

2016-09-02 20:21:58 717

原创 OC-UITextField

UITextField 单行文本输入框如何关闭键盘? 方式1: 让正在得到焦点的文本框 放弃第一响应者身份 [usernameField resignFirstResponder];方式二:让文本输入框所在的 父视图, 结束当前的编辑状态[self.view endEditing:YES];什么时候关闭键盘? -方式1 :点击屏幕的空白处 –重写控制器的 touchesBegan 方法即可,在

2016-09-02 20:16:47 714

原创 快速排序

问题描述–冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了 O(N^2)。假如我们的计算机每秒钟可以运行 10 亿次,那么对 1 亿个数进行排序,桶排序则只需要 0.1 秒,而冒泡排序则需要 1 千万秒,达到 115 天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦! –假设

2016-09-01 20:23:27 347

原创 冒泡排序

冒泡排序的基本思想–每次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。 例如我们需要将 12 35 99 18 76 这 5 个数进行从大到小进行排序。既然是从大到小排序也就是说越小的越靠后。首先比较第 1 位和第 2 位的大小,现在第 1 位是 12,第 2 位是 35。发现 12 比 35 要小,因为我们希望越小越靠后嘛,因此需要交换这两个数的位置。交换之后这 5 个数的顺序是 35

2016-09-01 20:15:37 362

原创 插入排序

插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。1、基本思想假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。2、第i-1趟直接插入排序–通常将一个记录R[i=2,3,…

2016-09-01 20:11:56 362

原创 OC-XIB使用&UITextField

1.使用xib简化创建界面的过程目标:通过少写或不写代码的情况下,完成界面的设置 如何实现? – 借助于系统Interface Builder完成,IB以前是一款独立的软件,现在整合到xcode中,只要需在创建自定义的控制器时,勾选下面的“Also Create xib file”选项,则系统自动生成与控制器类名相同,后缀为xib的文件 xib文件? – 本质:一个xml文件,通过IB这个可

2016-09-01 20:00:38 3202

原创 OC-UIButton

UIButtonUIButton 是 UIControl的子类 UIControl 是 UIView的子类 作用:与用户交互,用户可以点击,并提供响应 核心属性: - title: 按键上的文字 - image: 按键上的图片 - backgroundImage: 背景图片 - state:状态 高级事件: -touchUpInside 事件 在button区域内抬起- (voi

2016-08-31 20:22:25 645

原创 OC-UIKit-UILabel&第一个程序

1.第一个IOS应用程序 上图中: - 第三个参数 必须是UIApplication或其子类的名字,它代表着当前应用iPhone程序本身,这个参数会去读info.plist文件获取配置信息,如果该参数为nil,则默认为@“UIApplication” - 第四个参数 UIApplication的代理对象,也就是应用程序代理,负责控制程序的运行1.1 UIWindow 对象

2016-08-31 20:18:32 640

原创 OC-FUNDATION-NSDictionary&NSMutableDictionary&Block

1.NSDictionary1.1由键值对组成,关键字不允许重复,值可以重复 1.2创建方法NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3", nil];//标准方法NSDictionary *dict2 = @{@"1":@"one",@"2

2016-08-30 09:27:14 764

原创 OC-FUNDATION-NSSet&NSMutableSet

1.NSSet1.1集合,是无序、没有重复元素的数组 1.2创建方法(3种)#import <Foundation/Foundation.h>#import "SHStudent.h"#import "SHTeacher.h"int main(int argc, const char * argv[]) { @autoreleasepool { NSSet *set1

2016-08-29 11:07:08 866

原创 OC-FUNDATION-NSDate&NSArray&NSMutableArray

1.NSDate1.1时间对比(3种)NSDate *time1 = [NSDate dateWithTimeIntervalSinceNow:60*60*24];NSDate *time2 = [NSDate dateWithTimeIntervalSinceNow:60*60*24];NSDate *earlierDate = [time1 earlierDate:time2];//获取两个

2016-08-26 18:54:35 615

原创 变量、数据类型

1、变量变量是存储数据的方法数据类型:数据的分类变量的声明变量的额命名规则: 只能由字母、数字和下划线组成 首字母不能是数字,只能是字母或下划线 大小写敏感 int a;int A;这是两个不同的变量 不能与关键字冲突 int int;(不允许) 变量名长度不受限制 命名需要见名知意 驼峰命名法 cLanguageScore变量的

2016-08-26 10:20:45 319

原创 三种进制及其转换、char、浮点型

1、三种进制及其转换 int i = 10000000000;//超出整型数域范围 NSLog(@"%d", i); i = 1000000000 * 10; int a = 1000000000; int b = 10; //... i = a * b; long j = 1

2016-08-26 10:12:01 521

原创 结构化编程思想、运算符

1、结构化编程思想顺序结构分支结构:有条件地执行语句循环结构:反复执行某段代码2、分支结构单if语句:一件事做与不做的选择源码示例: int y = 0; if (y) { NSLog(@"%d",y); } NSLog(@"+-----------------+"); double mon

2016-08-26 09:19:00 545

原创 位运算、switch、循环结构

1、位运算(6种)与:&,对应位上都是1时才为1 3 011 & 5 101 001或:|,对应位上有1就为1 3 011 | 5 101 111异或:^,对应位上不同就为1 相同就为0(等价于找不同) 3 011 ^ 5 101

2016-08-26 09:11:40 665

原创 do-while循环、break、continue、数组

1、do~while循环:一般用于菜单类程序#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { int x = 0; do { printf("%d ", x);

2016-08-26 09:05:45 590

原创 数组、二维数组、函数

1、数组(续)遍历:逐个操作数组中的所有元素#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { int a[10] = {1,2,3,4,5,6,7,8,9,0}; //正向遍历 for (int i = 0

2016-08-26 08:54:47 278

iOS 13.2真机调试包13.2.zip

iOS 13.2的真机调试文件,放到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 目录下重启XCode即可。

2019-10-10

OpenGLShare.zip

https://blog.csdn.net/shuan9999/article/details/100859293 OpenGL搭建Mac环境所需资源

2019-09-15

空空如也

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

TA关注的人

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