制作尾随像素的最佳方法是什么?

时间:2015-11-26 06:44:18

标签: xcode swift core-graphics particles

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

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

无论如何,我正在想,如果我可以将所有像素保存在一个大型阵列中,并根据需要更改它们。这样我就可以根据粒子设置像素,并将每个帧淡出它们,从而产生一种痕迹的幻觉。

这样做的好方法是什么?我一直在看夸脱,核心图形和opengles然而我找不到一个教程告诉我如何绘制单个像素...只是告诉我如何画线和其他东西。我只需要能够逐像素地绘制屏幕(除非你有更好的想法)

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

1 个答案:

答案 0 :(得分: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. 在用户界面中显示新的合约:imageView.image = UIImage(CIImage: imageAccumulator.image())

  6. 通过为该图像添加模糊,您也可以让您的粒子淡出,就像我已经完成here一样。