iphone - 如何知道 GLCameraRipple 示例中的涟漪何时消失?

标签 iphone objective-c ios opengl-es

我正在使用 GLCameraRipple example在我用 glTexImage2D 加载的静态图像上产生涟漪。

我使用自己的着色器,因为示例中的着色器用于从视频源中获取图像。

它响应触摸并在触摸位置产生涟漪。

它工作正常,但出于电池保护的原因,我需要它在波纹动画完成时暂停绘图。在 Apple 的这个示例中,我在任何地方都看不到如何检查此状态。 GLKView 或 GLKViewController 对此没有任何委托(delegate)方法。

它使用在我的 GLKViewController 的每次更新中调用的 -runSimulation 方法,它完成了所有的魔法,但我仍然看不到在哪里可以检查涟漪是否已经完成动画,甚至比较初始状态处处泛起涟漪的状态。

我目前正在计算涟漪动画最多需要多少时间才能完成,直到我们再次看到静态图像并且我已将其设置为在这段秒数后暂停并在触摸事件时再次取消暂停发生了,但感觉根本不对劲。 (动画持续时间在大屏幕(例如 iPad)上有所不同,并且可能会因池大小、网格因子、触摸半径等而异)

我希望有一种方法可以检查 View 的内容是否与初始状态(当我刚刚加载图像时)不同并且知道涟漪动画已经播放完毕?

最佳答案

根据要求,我正在将我的评论转换为答案,以便关闭问题。

GLCameraRipple 示例使用名为 rippleTexCoords 的内部数组计算图像中纹理坐标的位移。该数组在每一帧的 -runSimulation 方法中更新,这就是涟漪传播的原因。

如果观察此数组的值变化,则可以确定波纹在某个阈值以下消失的点。然后,您可以将此时间用作暂停正在进行的模拟的时间。

关于iphone - 如何知道 GLCameraRipple 示例中的涟漪何时消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460405/

相关文章:

ios - displayModeButtonItem 实际上做了什么?

ios - 如何创建 Objective-C 桥接头文件?

ios - 从未收到 GKMatchmaker findMatchForRequest 邀请

iphone - 矩形在 ZBar 扫描仪中带上相机?

iphone - 检查当前 viewController 类是否为 IOS 7 中的 Person ViewController 时出现问题

iphone - UIPageView UIWebView 预取

iphone - 如何将 unity ios 项目与另一个 ios 项目嵌入

iphone - 如何在页面 View Controller 中获取当前 View Controller

iPhone SDK : Call method from UIImageViewClass to ViewController

objective-c - 关闭事件 NSWindow