Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios iPhone 4S上的GPUImage Kuwahara过滤器_Ios_Objective C_Ios7_Gpuimage - Fatal编程技术网

Ios iPhone 4S上的GPUImage Kuwahara过滤器

Ios iPhone 4S上的GPUImage Kuwahara过滤器,ios,objective-c,ios7,gpuimage,Ios,Objective C,Ios7,Gpuimage,我正在使用Brad Larson的GPUImage框架。然而,当我尝试应用过滤器半径为5.0f的kuwahara过滤器时,我在iPhone 4S上得到了一些瑕疵。(在高性能设备上工作良好) 源图像大小为2048x2048px。 通过阅读原始开发人员的评论,我了解到有一种看门狗定时器,当GPU上运行的时间太长时会触发 因此,我的问题是,对于半径为5.0f且不产生伪影的iPhone 4S,我可以应用Kuwahara过滤器的最大可能分辨率是多少。您看到的平铺瑕疵是由于OpenGL ES watchdo

我正在使用Brad Larson的GPUImage框架。然而,当我尝试应用过滤器半径为
5.0f
kuwahara
过滤器时,我在iPhone 4S上得到了一些瑕疵。(在高性能设备上工作良好)

源图像大小为
2048x2048px。

通过阅读原始开发人员的评论,我了解到有一种看门狗定时器,当GPU上运行的时间太长时会触发


因此,我的问题是,对于半径为
5.0f
且不产生伪影的iPhone 4S,我可以应用
Kuwahara
过滤器的最大可能分辨率是多少。您看到的平铺瑕疵是由于OpenGL ES watchdog计时器在花费太长时间后中止了场景渲染。如果单个帧的渲染时间超过大约2秒,则帧渲染将以这种方式终止


所需的准确时间取决于硬件功能、系统负载、着色器复杂性和iOS版本。在GPUImage中,您几乎只能在Kuwahara过滤器中看到这一点,因为我使用了可笑的未优化着色器。它取材于一份使用桌面GPU进行此操作的出版物,对于这样的移动GPU来说,这是最糟糕的操作。有人为此提供了一个固定半径版本,速度要快得多,但是如果你想在除最新设备以外的任何设备上使用大图像,你需要创建自己的优化版本。

Kuwahara filter制作方形人工制品,而且非常复杂

  • 您可以使用通用Kuwahara过滤器(例如,8段)
  • 可以手动生成选定半径的着色器,而无需循环。为了减少纹理的读数数量,您可以使用以下技巧:
    • 生成恒定半径的着色器
    • 像素偏移必须取决于当前半径和恒定半径的比率

  • 你会得到一些艺术品,但它们是艺术的(比如画布)。Kuwahara会更快。

    我认为可以根据每个gpu在iOS设备上的性能来制定一个最大限制。不知道这可能还取决于系统负载和iOS版本。即使在性能上有了突破,库瓦哈拉也是一个如此出色的过滤器。非常感谢你的快速回答。