我正在使用GLCameraRipple示例在静态图像上产生波纹,该静态图像由glTexImage2D加载。

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

它响应触摸并在触摸位置上产生波纹。

它可以正常工作,但是出于节电的目的,当波纹动画结束时,我需要暂停绘制。 在这个来自Apple的示例中,我什么地方都看不到如何检查此状态。 GLKView或GLKViewController没有任何委托方法。

它使用了-runSimulation方法,该方法在GLKViewController的每个-update中都会调用,它具有所有的魔力,但是我仍然看不到在哪里可以检查波纹是否已经完成动画设置,甚至无法将初始状态与状态进行比较到处都是涟漪。

我目前正在计算自己最多要花费多少时间才能完成波纹动画,直到我们看到的再次是静态图像为止,并且我将其设置为在此秒数后暂停,并在发生触摸事件时再次取消暂停,但是感觉根本不对。 (动画持续时间在大屏幕上(例如,在iPad上是不同的,并且可能会根据池大小,网格因子,触摸半径等而变化)

我希望有一种方法可以检查视图的内容是否不同于初始状态(当我刚刚加载图像时),并且知道波纹动画已经播放完了吗?

#1楼 票数:1 已采纳

根据要求,我将我的评论转换为答案,以便可以解决问题。

GLCameraRipple示例使用称为rippleTexCoords的内部数组来计算图像中纹理坐标的位移。 在每帧的-runSimulation方法中更新此数组,这是导致波动传播的原因。

如果观察此数组的值的变化,则可以确定波纹下降到低于某个阈值的点。 然后,您可以以此为时间来暂停正在进行的仿真。

  ask by Elias Limneos translate from so

未解决问题?本站智能推荐:

1回复

如何用Image作为背景重写GLCameraRipple示例?

我试图用图像作为背景重写Apple Sample GLCameraRipple代码。 实际上我正在尝试使用此代码创建水图像的涟漪效果,但代码适用于相机,相反,我只想使用简单的水图像作为背景而不是相机。 任何方向或任何示例代码都将是一个很大的帮助。 提前致谢。
1回复

如何衡量OpenGL ES的真正FPS性能?

我意识到这些是两件不同的事情: 绘图,并在屏幕上显示。 因此,虽然您可以以60 FPS的速率从CADisplayLink中获取每次调用,但如果您的绘图操作时间略长于1/60秒,理论上最终会得到30 FPS,因为您错过了其他所有获得机会的机会通过渲染管道。 好; 知道了这一点,
1回复

如何在openglES中进行纹理映射? (将2D面映射到3D网格中)

我需要将2D人脸图像转换为3D图像。 为此我想到了使用openglES进行纹理映射。 我试了很多谷歌搜索一些我无法得到的样本。 有人可以指导我这样做吗? 输入:2D图像输出:3D图像 平台:ios
1回复

如何在辅助线程上以与主线程相同的速率运行AVAssetReader?

我有一个OpenGL iOS应用程序,正在使用AVAssetReader从视频中读取帧并使用视频内容构造一个简单的模型。 一切都按预期工作,除了我在辅助线程上使用AVAssetReader并在主线程上绑定了纹理。 问题在于视频正在逐帧运行,速度非常慢。 有什么方法可以将视频位置与当
6回复

我在哪里可以找到响应触摸的iPhone OpenGL ES示例?

我想找一个响应触摸的iPhone OpenGL ES示例。 理想情况下它会满足这些要求: 像立方体一样在屏幕中心显示3D对象 将纹理映射到立方体曲面 拖动手指时,应将相机移动到立方体周围 应该通过挤压将相机放大和缩小到立方体上 可选择在立方体后面有一个
1回复

在UITableView中显示格式化的文本

我必须创建一个UITableView,其中每个UITableViewCell中都包含格式丰富的文本。 解决该问题的第一个尝试是将文本转换为html,然后在UIWebView中呈现文本。 但是,我发现单元格加载时间太长,并且滚动时未调用webviewdidload。 然后,我尝试将几个格
1回复

在GL_TEXTURE_COORD_ARRAY和GL_COLOR_ARRAY客户端状态之间切换时黑屏

我的iOS 5应用程序中具有绘制功能,可绘制带纹理的六边形的地图。 我试图实现颜色选择以使六边形的选择更加容易,所以我构建了另一个绘制函数,以各种纯色绘制六边形。 只要我从不调用替代函数,这些命令就可以正常运行。 当我尝试绘制纹理六边形图后的任何点(即使在不同的渲染循环中)尝试绘制纯色
1回复

当尝试将其与从视频文件框架获得的纹理一起使用时,CIImage是空白的

我正在尝试创建一个应用过滤器到视频文件的应用程序。 我想使用核心图像过滤器 CIImage(my_image)始终为空白(即显示为黑色),不包含视频纹理。 我正在iPhone 6设备上测试它。 我哪里错了?