跳到主要内容

渲染器(Renderer)

提供路径/图像绘制、裁剪和变换应用等渲染能力。

方法(Methods)

drawPath

使用指定 Paint 绘制 Path

function draw(self: Rectangle, renderer: Renderer)
renderer:drawPath(self.path, self.paint)
end

drawImage

使用 ImageSamplerBlendMode 与透明度绘制 Image

type DrawImage = {
myImage: Image?,
sampler: ImageSampler?,
}

function init(self: DrawImage, context: Context): boolean
self.myImage = context:image('myImage')
self.sampler = ImageSampler('clamp', 'clamp', 'bilinear')

return true
end

function draw(self: DrawImage, renderer: Renderer)
if self.myImage and self.sampler then
renderer:drawImage(self.myImage, self.sampler, 'srcOver', 1)
end
end

return function(): Node<DrawImage>
return {
myImage = nil,
sampler = nil,
init = init,
draw = draw,
}
end

drawImageMesh

基于网格数据(顶点、纹理坐标、三角索引)绘制图像。

clipPath

将后续绘制裁剪到给定 Path 区域内。

裁剪在下一次 restore 前持续生效。

save

保存当前渲染状态(变换、裁剪等)。

function draw(self: MyGame, renderer: Renderer)
-- draw each enemy
for _, enemy in self.enemies do
renderer:save()
enemy.artboard:draw(renderer)
renderer:restore()
end
end

restore

恢复最近一次 save 的渲染状态。

function draw(self: MyGame, renderer: Renderer)
-- draw each enemy
for _, enemy in self.enemies do
renderer:save()
enemy.artboard:draw(renderer)
renderer:restore()
end
end

transform

对当前渲染状态应用变换,直到 restore 前会累计生效。

function draw(self: SkewImage, renderer: Renderer)
if self.myImage and self.sampler then
local m = Mat2D.withScale(2, 3)
m.xx = 5

renderer:save()
renderer:transform(m)
renderer:drawImage(self.myImage, self.sampler, 'srcOver', 1)
renderer:restore()
end
end