【问题标题】:Best way to make a trailing pixel?制作尾随像素的最佳方法?
【发布时间】:2015-11-26 06:44:18
【问题描述】:

所以很快,对于 iOS 设备(尽管如果我仍然可以在 Xcode 中编码,跨平台会很酷)我正在尝试做一些相当简单的事情。

我想要做的就是让小粒子在屏幕上四处移动并留下痕迹。不幸的是,我不能使用传统的粒子系统,因为我需要对它们的运动进行编程。

无论如何,我想如果我可以将所有像素保留在一个大数组中,并根据需要更改它们。这样我就可以根据粒子设置像素,然后在每一帧中将它们淡出,从而产生轨迹的错觉。

有什么好的方法可以做到这一点?我一直在看 quarts、core graphics 和 opengles,但是我找不到一个教程来告诉我如何绘制一个像素……只是那些告诉我如何绘制线条和其他东西的教程。我只需要能够逐个像素地绘制屏幕(除非你有更好的主意)

  1. 我应该使用什么框架
  2. 如何在给定 x,y 屏幕坐标的情况下在其中绘制单个像素(或链接教程)。

非常感谢!

【问题讨论】:

    标签: xcode swift core-graphics particles


    【解决方案1】:

    带有CIImageAccumulator 的CoreImage 可以帮助您做到这一点。在我的FurrySketch 项目中,我做了一些非常相似的事情。简而言之:

    1. 开始 UI 图形上下文:UIGraphicsBeginImageContext(view.frame.size)
    2. 使用CGContextAddLineToPoint等函数绘制上下文
    3. 创建绘图的CIImagelet drawnImage = UIGraphicsGetImageFromCurrentImageContext()
    4. 使用CISourceOverCompositing 将新图像合成到累加器中的前一个图像,并将合成图像写回累加器: compositeFilter.setValue(CIImage(image: drawnImage), forKey: kCIInputImageKey) compositeFilter.setValue(imageAccumulator.image(), forKey: kCIInputBackgroundImageKey) imageAccumulator.setImage(compositeFilter.valueForKey(kCIOutputImageKey) as! CIImage)

    5. 在 UI 中显示新的组合:imageView.image = UIImage(CIImage: imageAccumulator.image())

    通过还为该图像添加模糊效果,您可以让粒子也淡出,就像我在 here 所做的那样。

    【讨论】:

    • 所以我正在查看该代码。不幸的是,当我尝试针对 iOS 8.0+ 时,我无法使用复合过滤器。他们是另一种选择吗?
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2011-09-13
    • 2015-04-24
    相关资源
    最近更新 更多