检测-glkView中的-snapshot调用:drawInRect:使用GLKit

时间:2012-11-11 05:53:01

标签: 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
{
    if ((self.view != view)) NSLog(@"drawing for snapshot");
    // draw code ...
}

但没有运气。我正在考虑的另一个方法是创建一个布尔变量,只要调用-snapshot就会设置它,-glkView:drawInRect:会在绘制快照特定视图后重置它。但这看起来很脏,可能会导致多个错误,特别是如果以60 fps绘制。

您是否提供任何建议或示例来检测-glkView:drawInRect:方法是否正在绘制-snapshot

提前致谢

1 个答案:

答案 0 :(得分:0)

子类GLKView并将snapshot方法覆盖为以下内容:

- (UIImage *)snapshot
{
    self.isDrawingSnapshot = YES;

    UIImage *result = [super snapshot];

    self.isDrawingSnapshot = NO;
    return result;
}

您也可以使用自定义委托来通知视图控制器或发布NSNotification,而不是属性。