Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 检测-快照调用-glkView:drawInRect:使用GLKit_Objective C_Ios_Opengl Es_Opengl Es 2.0_Glkit - Fatal编程技术网

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中创建了一个新方法,它与上面的代码完全相同。