SpriteKit - 如何渲染到现有纹理

时间:2017-03-10 09:48:58

标签: objective-c sprite-kit textures

在SpriteKit中,如何将场景渲染到现有的纹理?

textureFromNode:的{​​{1}}方法将场景渲染为纹理,但它正在创建一个新纹理。我想避免这种开销。

1 个答案:

答案 0 :(得分:1)

据我所知,没有这样的API,这意味着您必须使用SKMutableTexture对象并使用-modifyPixelDataWithBlock:方法自行更新像素数据。

但是,这很可能比从您提到的API中获取新的SKTexture对象更昂贵。来自SKMutableTexture documentation

  

通常,SpriteKit纹理(SKTexture对象)是静态的,这意味着一旦创建,它们的内容就无法更改。这很重要,因为可以在图形硬件内更有效地管理静态图像。但是,有时您需要能够动态更新纹理的内容。在这种情况下,您应该使用可变纹理。因为更新纹理内容会有性能损失,所以首先考虑其他选项。例如,您可以使用texture(from :)方法和节点树在硬件中渲染纹理。

如果纹理创建实际上是通过仪器可验证的瓶颈,那么您可能需要研究其他工作方式。