首页 > 解决方案 > Render text with SKRenderer

问题描述

I initialized SKRenderer in my project to use it alongside of metal. Although I'm not sure that I did it correctly, I need to know how I can render a simple 2D text with it?

For example, here is how we can draw a text with SKLabelNode, do we have anything like it for SKRenderer? thank you so much

let winner = SKLabelNode(fontNamed: "Chalkduster")
winner.text = "You Win!"
winner.fontSize = 65
winner.fontColor = SKColor.red
winner.position = CGPoint(x: 100, y: 100)
view.addChild(winner)

标签: swiftsprite-kitmetal

解决方案


您需要做的第一件事是初始化场景。

var renderer: SKRenderer
var skScene: SKScene

在你的初始化函数中:

renderer = SKRenderer(device: device)
// iphone 11 portrait
skScene = SKScene(size: CGSize(width: 1125, height: 2436))
renderer.scene = skScene

let winner = SKLabelNode(fontNamed: "Chalkduster")
winner.text = "You Win!"
winner.fontSize = 65
winner.fontColor = SKColor.red
winner.position = CGPoint(x: 1125 / 2, y: 2436 / 2)
skScene.addChild(winner)

最后在您的渲染功能中:

renderer.render(withViewport: viewport, renderCommandEncoder: renderEncoder, renderPassDescriptor: renderPassDescriptor, commandQueue: commandQueue)
renderEncoder.endEncoding()

但请记住 ui 层(SKRenderer)应该在最后一次渲染。


推荐阅读