Objective c 检测-快照调用-glkView:drawInRect:使用GLKit
我正在查看Objective c 检测-快照调用-glkView:drawInRect:使用GLKit,objective-c,ios,opengl-es,opengl-es-2.0,glkit,Objective C,Ios,Opengl Es,Opengl Es 2.0,Glkit,我正在查看-glkView:drawInRect:是否可以检测到它是为-snapshot方法绘制的,而不是将视图显示给用户的正常方式。这样我就可以检测出如何正确地绘制视图。我检测视图差异的尝试是将传递给-glkView:drawInRect:的视图与GLKViewController的视图进行比较: // standard function GLKViewController - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
-glkView:drawInRect:
是否可以检测到它是为-snapshot
方法绘制的,而不是将视图显示给用户的正常方式。这样我就可以检测出如何正确地绘制视图。我检测视图差异的尝试是将传递给-glkView:drawInRect:
的视图与GLKViewController的视图进行比较:
// standard function GLKViewController
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
if ((self.view != view)) NSLog(@"drawing for snapshot");
// draw code ...
}
但是没有运气。我考虑的另一种方法是创建一个布尔变量,该变量将在调用-snapshot
时设置,-glkView:drawInRect:
将在绘制特定于快照的视图后重置它。但这看起来很脏,可能会导致多个错误,特别是当以60 fps的速度绘制时
对于检测-glkView:drawInRect:
是否为-snapshot
方法绘图,您是否给出了任何建议或示例
提前感谢子类
GLKView
,并将快照
方法改写为如下内容:
- (UIImage *)snapshot
{
self.isDrawingSnapshot = YES;
UIImage *result = [super snapshot];
self.isDrawingSnapshot = NO;
return result;
}
您也可以使用自定义委托来通知视图控制器,而不是属性,或者发布
NSNotification
我使用了类似的方法。我在我的GLKViewController中创建了一个新方法,它与上面的代码完全相同。