首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS金属-简化/优化算法(点线距离)

iOS金属-简化/优化算法(点线距离)
EN

Stack Overflow用户
提问于 2016-05-19 18:29:09
回答 1查看 135关注 0票数 0

我正在使用Metal创建一个iOS应用程序。在我的应用程序中,我有一些粒子可以通过触摸设备的显示屏来操纵。每个粒子都有一个x和y(以及z和w,但这些在这里并不重要),并且每个触摸手指都有“重力井”(z == 1表示触摸处于活动状态)。每次调用我的Particles.swift (MTKView的子类)中的drawRect时,每个粒子都会更新-这发生在我的Particle.metal文件中。

如果两个手指触摸显示器,则会在两个触摸点之间创建一条不可见的线。距离这条线足够近的每个粒子都垂直于这条线被移走。不幸的是,我怀疑这种操作(或计算)会导致旧设备(如iPhone 5s,有时是iPhone 6)上的CPU过载,从而导致整个屏幕(iPhone 6)闪烁,甚至删除屏幕上的所有粒子(iPhone 5s)。

下面是粒子双指操作的当前算法:pastebin link。首先,我计算粒子与“不可见线”之间的距离。如果距离小于某个值,则会操纵粒子的位置。对屏幕上可见的每个粒子执行此操作。

我想知道是否有人可以建议任何优化/简化技巧。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-19 20:15:22

您是否考虑过使用单独的计算机着色器沿该线绘制线性渐变,并使用该纹理来控制粒子的方向?我有一个项目,ParticleCam,它使用实时摄像头提要的亮度值来将粒子吸引到图像的较亮区域。如果你传递给着色器一个线性渐变的图像,你可能会达到你想要的效果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37320528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档