本文为L_Ares个人写作,包括图片皆为个人亲自操作,如需转载请表明原文出处。
顾名思义,GLKViewController是个控制器,而且还是继承于UIViewController的控制器。所以它继承了UIViewController的一切方法,同时又添加了项关于OpenGL ES的方法合集。
不多说,直接介绍它在头文件中开放出来的属性和方法。
一、更新
1.更新你的视图控制器。
-(void)update;
2.利用代理方法更新你的视图控制器。
- (void)glkViewControllerUpdate:(GLKViewController *)controller;
代理方法一般在你显示每一个帧之前都会调用,可以添加想要的业务进去。
代理方法有个毛病,就是在GLKViewController
已经被子类化,并且实现了-(void)update;
函数之后,你再实现这个代理方法,他是不调用的。
顺带直接说另一个@optional
的代理,上面那个必须实现,这个看业务需求。
当视图控制器暂停的状态更改时,在你的渲染循环暂停或者恢复之前,可以实现如下方法进行业务设置:
- (void)glkViewController:(GLKViewController *)controller willPause:(BOOL)pause;
二、配置帧速率
1. preferredFramesPerSecond
单位:帧/秒。
GLKViewController
对象调用视图和更新视图内容的速率。也就是你更新和绘制视图每秒要多少帧。默认60帧/秒。
帧数越高,也就越流畅。
@property (nonatomic) NSInteger preferredFramesPerSecond;
2. framesPerSecond
单位:帧/秒
上面那个是你想要GLKViewController
实现的视图调用和更新速率,这个是它实际上的速率。
@property (nonatomic, readonly) NSInteger framesPerSecond;
三、控制帧更新
1. paused
渲染是否暂停。
@property (nonatomic, getter=isPaused) BOOL paused;
2. pauseOnWillResignActive
当前程序重新激活活动状态时,视图控制器是否自动暂停渲染循环。默认为true
。也就是说,如果设置为true
,那么控制器将在应用程序收到willResignActive通知时暂停渲染循环。
@property (nonatomic) BOOL pauseOnWillResignActive;
3. resumeOnDidBecomeActive
当程序变为活动状态时,视图控制器是否自动恢复循环。默认为ture
。也就是说,如果设置为true
,那么控制器将在应用程序收到didBecomeActive通知时恢复循环。
四、获取有关View的更新信息
1. framesDisplayed
视图控制器自创建以来,发送的帧更新次数。
@property (nonatomic, readonly) NSInteger framesDisplayed;
2. timeSinceFirstResume
自视图控制器第一次恢复发送视图更新事件以来,经过的时间。
@property (nonatomic, readonly) NSTimeInterval timeSinceFirstResume;
3. timeSinceLastResume
自视图控制器上一次恢复发送视图更新事件以来,经过的时间。
@property (nonatomic, readonly) NSTimeInterval timeSinceLastResume;
4. timeSinceLastUpdate
自视图控制器上一次调用代理方法glkViewControllerUpdate
以来,经过的时间。
@property (nonatomic, readonly) NSTimeInterval timeSinceLastUpdate;
5. timeSinceLastDraw
自视图控制器上一次调用display
方法以来,经过的时间。
@property (nonatomic, readonly) NSTimeInterval timeSinceLastDraw;
网友评论