在SpriteKit中,如何将场景渲染到现有的纹理?
textureFromNode:
的{{1}}方法将场景渲染为纹理,但它正在创建一个新纹理。我想避免这种开销。
答案 0 :(得分:1)
据我所知,没有这样的API,这意味着您必须使用SKMutableTexture
对象并使用-modifyPixelDataWithBlock:
方法自行更新像素数据。
但是,这很可能比从您提到的API中获取新的SKTexture
对象更昂贵。来自SKMutableTexture
documentation:
通常,SpriteKit纹理(SKTexture对象)是静态的,这意味着一旦创建,它们的内容就无法更改。这很重要,因为可以在图形硬件内更有效地管理静态图像。但是,有时您需要能够动态更新纹理的内容。在这种情况下,您应该使用可变纹理。因为更新纹理内容会有性能损失,所以首先考虑其他选项。例如,您可以使用texture(from :)方法和节点树在硬件中渲染纹理。
如果纹理创建实际上是通过仪器可验证的瓶颈,那么您可能需要研究其他工作方式。