所以在swift中,对于iOS设备(尽管如果我仍然可以在Xcode中编码,跨平台会很酷)我试着做一些相当简单的事情。
我想做的就是在屏幕上移动小颗粒留下痕迹。不幸的是,我不能使用传统的粒子系统,因为我需要对它们的运动进行编程。
无论如何,我正在想,如果我可以将所有像素保存在一个大型阵列中,并根据需要更改它们。这样我就可以根据粒子设置像素,并将每个帧淡出它们,从而产生一种痕迹的幻觉。
这样做的好方法是什么?我一直在看夸脱,核心图形和opengles然而我找不到一个教程告诉我如何绘制单个像素...只是告诉我如何画线和其他东西。我只需要能够逐像素地绘制屏幕(除非你有更好的想法)
非常感谢!
答案 0 :(得分:1)
CIImageAccumulator
的CoreImage可以帮助您实现这一目标。在我的FurrySketch项目中,我做了一些非常相似的事情。简而言之:
UIGraphicsBeginImageContext(view.frame.size)
CGContextAddLineToPoint
等函数绘制上下文CIImage
:let drawnImage = UIGraphicsGetImageFromCurrentImageContext()
使用CISourceOverCompositing
将新图像合并到累加器中的前一个图像上,然后将合成图像写回累加器:
compositeFilter.setValue(CIImage(image: drawnImage),
forKey: kCIInputImageKey)
compositeFilter.setValue(imageAccumulator.image(),
forKey: kCIInputBackgroundImageKey)
imageAccumulator.setImage(compositeFilter.valueForKey(kCIOutputImageKey) as! CIImage)
在用户界面中显示新的合约:imageView.image = UIImage(CIImage: imageAccumulator.image())
通过为该图像添加模糊,您也可以让您的粒子淡出,就像我已经完成here一样。