有没有办法在SpriteKit中绘制像素?

时间:2014-03-18 21:10:30

标签: ios draw pixel

我正在尝试将光线追踪程序放在一起,并且单个光线中每个像素的宽度/阴影将在线条的长度上发生变化。 SpriteKit中有没有办法在屏幕上绘制单个像素?或者我应该使用UIImage进行此操作?

2 个答案:

答案 0 :(得分:5)

SpriteKit不是像素绘图API。它更像是“在屏幕上移动图片”API。但是,有几种情况下,自定义绘图是有意义的,SpriteKit(从iOS 8和OS X 10.10开始)有一些设施。

  1. 如果你想创建自定义艺术以应用于精灵,那么艺术大多是静态的(也就是说,不需要经常重绘,因为SpriteKit为场景设置动画),只需使用您选择的绘图API - 核心图形,OpenGL,emacs等等 - 创建图像。然后,您可以将该图像粘贴到SKTexture对象中,以应用于场景中的精灵。

  2. 要直接扫描纹理内的位,请使用SKMutableTexture。这并不能真正提供绘图功能 - 您只需使用原始图像数据即可。 (虽然您可以将绘图工具叠加在其上 - 例如,通过从数据创建CG图像上下文并使用CG结果重写数据 - 这会使您减慢太多以跟上动画帧速率。)

  3. 如果您需要高帧率,每像素绘图,最好的办法是完全在GPU上完成。请使用SKShader

答案 1 :(得分:0)

如果您的应用程序正在重绘每一帧,那么您可以使用屏幕外缓冲区动态更新像素,即SKMutableTexture。我不确定它会有多慢。