Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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
Ipad 为什么Quartz不双缓冲我的drawInContext()? 我正在绘制一个简单的行,通过DRAWWORKEXT在一个CALALER子类的中间绘制一些文本。当用户通过调用setNeedsDisplay执行手势时,我会更新该层。我看到的效果是,如果没有双缓冲的话,我可能会想到的。。。i、 e.我看到新渲染的部分与旧渲染的部分重叠。当我停止更新完成手势时,系统会跟上,我总是看到正确的最终结果,但在更新过程中,我看到不一致的结果。。。这种影响并不微妙,有时甚至是极端的。。。e、 g.如果我保持足够快的更新速度,我可以在屏幕上保留图纸的旧部分数秒,而新部分正在绘制中_Ipad_Drawing_Quartz 2d - Fatal编程技术网

Ipad 为什么Quartz不双缓冲我的drawInContext()? 我正在绘制一个简单的行,通过DRAWWORKEXT在一个CALALER子类的中间绘制一些文本。当用户通过调用setNeedsDisplay执行手势时,我会更新该层。我看到的效果是,如果没有双缓冲的话,我可能会想到的。。。i、 e.我看到新渲染的部分与旧渲染的部分重叠。当我停止更新完成手势时,系统会跟上,我总是看到正确的最终结果,但在更新过程中,我看到不一致的结果。。。这种影响并不微妙,有时甚至是极端的。。。e、 g.如果我保持足够快的更新速度,我可以在屏幕上保留图纸的旧部分数秒,而新部分正在绘制中

Ipad 为什么Quartz不双缓冲我的drawInContext()? 我正在绘制一个简单的行,通过DRAWWORKEXT在一个CALALER子类的中间绘制一些文本。当用户通过调用setNeedsDisplay执行手势时,我会更新该层。我看到的效果是,如果没有双缓冲的话,我可能会想到的。。。i、 e.我看到新渲染的部分与旧渲染的部分重叠。当我停止更新完成手势时,系统会跟上,我总是看到正确的最终结果,但在更新过程中,我看到不一致的结果。。。这种影响并不微妙,有时甚至是极端的。。。e、 g.如果我保持足够快的更新速度,我可以在屏幕上保留图纸的旧部分数秒,而新部分正在绘制中,ipad,drawing,quartz-2d,Ipad,Drawing,Quartz 2d,我一点也不明白。如果Quartz正在进行缓冲,那么它似乎没有将结果全部显示在屏幕上,或者它错误地计算了受影响的区域 我尝试过的事情: 1我正在禁用隐式动画,并在CATTransaction中绘制所有图形 我的画没有错。。。它实际上只是两行,中间有一些文字。。。我不可能渲染中间工件 3我试图通过跳过大部分更新来限制更新速度。。。但即使以较低的速度,我也会看到工件,直到我停止更新并让系统跟上 4顺便说一句,这种情况在模拟器和iPad设备上都是相同的 我是否有必要自己画一个屏幕外的缓冲区,并将其全部复

我一点也不明白。如果Quartz正在进行缓冲,那么它似乎没有将结果全部显示在屏幕上,或者它错误地计算了受影响的区域

我尝试过的事情:

1我正在禁用隐式动画,并在CATTransaction中绘制所有图形

我的画没有错。。。它实际上只是两行,中间有一些文字。。。我不可能渲染中间工件

3我试图通过跳过大部分更新来限制更新速度。。。但即使以较低的速度,我也会看到工件,直到我停止更新并让系统跟上

4顺便说一句,这种情况在模拟器和iPad设备上都是相同的

我是否有必要自己画一个屏幕外的缓冲区,并将其全部复制到屏幕上?我以为我读到过石英为我做这件事

更新:
和往常一样,在我的头撞了几个小时后,我在发布问题5分钟后找到了部分答案。我意识到我在使用CATiledLayer以便在缩放时重新渲染我的层。如果我把它换回普通的CALayer,故障就会消失。所以,我猜我看到的是单独瓷砖渲染的瑕疵。现在我正在想办法解决这个问题…

所以,我发现我有三个问题:

1 CATiledLayer在新平铺内容中显式淡入淡出,默认时间为0.25秒。。。这对我的画造成了极大的破坏。我在CATiledLayer子类中覆盖了这一点:

+ (CFTimeInterval)fadeDuration {
    NSLog(@"got fade duration");
    return 0;
}
2我还必须调整最大瓷砖大小,我将其设置为1024x1024,尽管我不知道它实际使用的大小

3在更新过程中,我定期调整我的层的框架,这似乎会给平铺层带来额外的问题。我正在做出改变来阻止这种情况


通过所有这些更改,性能现在似乎可以接受。

因此,我发现有三个问题:

1 CATiledLayer在新平铺内容中显式淡入淡出,默认时间为0.25秒。。。这对我的画造成了极大的破坏。我在CATiledLayer子类中覆盖了这一点:

+ (CFTimeInterval)fadeDuration {
    NSLog(@"got fade duration");
    return 0;
}
2我还必须调整最大瓷砖大小,我将其设置为1024x1024,尽管我不知道它实际使用的大小

3在更新过程中,我定期调整我的层的框架,这似乎会给平铺层带来额外的问题。我正在做出改变来阻止这种情况


通过所有这些更改,性能现在似乎可以接受。

您可以制作一些简短的示例代码来重新处理问题吗?您可以制作一些简短的示例代码来重新处理问题吗?