制作尾随像素的最佳方法?
Best way to make a trailing pixel?
所以在 swift 中,对于 iOS 设备(如果我仍然可以在 Xcode 中编码,跨平台会很酷)我正在尝试做一些相当简单的事情。
我只想让小颗粒在屏幕上四处移动并留下痕迹。不幸的是,我不能使用传统的粒子系统,因为我需要对它们的运动进行编程。
无论如何,我在想,如果我可以将所有像素保存在一个大数组中,并根据需要更改它们。这样我就可以根据粒子设置像素,并在每一帧淡出它们,从而产生轨迹的错觉。
执行此操作的好方法是什么?我一直在研究 quarts、core graphics 和 opengles,但是我找不到一个教程告诉我如何绘制单个像素……只有那些告诉我如何画线和其他东西的教程。我只需要能够逐个像素地绘制屏幕(除非你有更好的主意)
- 我应该使用什么框架
- 如何在给定 x,y 屏幕坐标(或 link 教程)的情况下在其中绘制单个像素。
非常感谢!
带有 CIImageAccumulator
的 CoreImage 可以帮助您做到这一点。在我的 FurrySketch 项目中,我做了一些非常相似的事情。简而言之:
- 开始 UI 图形上下文:
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)
在 UI 中显示新合成:imageView.image = UIImage(CIImage: imageAccumulator.image())
通过为该图像添加模糊,您也可以让粒子淡出,就像我所做的那样 here。
所以在 swift 中,对于 iOS 设备(如果我仍然可以在 Xcode 中编码,跨平台会很酷)我正在尝试做一些相当简单的事情。
我只想让小颗粒在屏幕上四处移动并留下痕迹。不幸的是,我不能使用传统的粒子系统,因为我需要对它们的运动进行编程。
无论如何,我在想,如果我可以将所有像素保存在一个大数组中,并根据需要更改它们。这样我就可以根据粒子设置像素,并在每一帧淡出它们,从而产生轨迹的错觉。
执行此操作的好方法是什么?我一直在研究 quarts、core graphics 和 opengles,但是我找不到一个教程告诉我如何绘制单个像素……只有那些告诉我如何画线和其他东西的教程。我只需要能够逐个像素地绘制屏幕(除非你有更好的主意)
- 我应该使用什么框架
- 如何在给定 x,y 屏幕坐标(或 link 教程)的情况下在其中绘制单个像素。
非常感谢!
带有 CIImageAccumulator
的 CoreImage 可以帮助您做到这一点。在我的 FurrySketch 项目中,我做了一些非常相似的事情。简而言之:
- 开始 UI 图形上下文:
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)
在 UI 中显示新合成:
imageView.image = UIImage(CIImage: imageAccumulator.image())
通过为该图像添加模糊,您也可以让粒子淡出,就像我所做的那样 here。