gpt4 book ai didi

ios - 为 GPUImage 创建耗时的制服

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:19 24 4
gpt4 key购买 nike

我正在与 Brad Larson 的 GPUImage 合作,我发现这真的很棒。为了灵 active 和易于编写,我创建了一个具有 3 个统一输入的自定义过滤器。我将其基于 GPUImageBrightnessFilter.h 和 .m。一个 uniform 只是一个“参数” float ,一个是“中心”CGPoint,如果我需要它们可以输入触摸坐标,还有一个是时间 float ,它是自着色器启动以来耗时量。我正在使用 initWithFragmentShaderFromFile 来使用我自己的着色器文件。

我的“参数”和“中心”制服有效。时间制服是行不通的,因为我不明白如何创造一个不断变化的制服(就像时间一样)。

我的时间统一的目标似乎与 SpriteKit 的 u_time 相似。它返回自当前着色器运行以来的秒数,您可以将其输入自定义着色器以对其进行动画处理。一个非常简单的示例用途可能是随着时间的推移循环图像的色调。随着我对 GLSL 知识的增长,我希望以更复杂的方式构建它。

我不确定要发布什么代码,因为我的误解可能存在于很多地方,而且可能是我正在尝试做一些不可能的事情。这篇关于设置开始时间并从 CACurrentMediaTime() 中减去它的帖子似乎是一个不错的起点:

Getting the time elapsed (Objective-c)

问题是我不确定如何不断更新制服以传递到我的着色器。我是否在我的自定义过滤器的 setter 中执行它有时间?自定义 setter 不是只执行一次吗?我是否在我的 init 覆盖中这样做?那不是只执行一次吗?我是否在我的 Controller 中编写了一个不断调用 setter 的循环?这似乎是一个昂贵且困惑的解决方案。

我不是要代码,只是建议引导我朝着正确的方向前进,或者让我远离我思考中的任何错误方向。

最佳答案

提出这个问题帮助我找到了解决方案并了解了 NSTimer。我将一个创建重复 NSTimer 的方法合并到我自定义的 GPUImageFilter 子类中,该子类将时间统一传递给着色器。它调用一个选择器来增加我的“时间”变量并将其传递到统一数组中。

关于ios - 为 GPUImage 创建耗时的制服,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com