MaLiang icon indicating copy to clipboard operation
MaLiang copied to clipboard

橡皮擦无法完全擦除

Open WhiteRainbow opened this issue 3 years ago • 4 comments

测试bug情况 画笔颜色: 纯红色 画笔大小: 20 画布背景颜色: 透明 控制器背景颜色: 棕色 橡皮擦大小: 30

只要橡皮擦大小大于画笔大小就无法完全擦出, demo里背景是白色看不出来, 换个其他颜色可以看到 我试图将MTLRenderPipelineColorAttachmentDescriptor中的所有颜色混合因子都设为0, 虽然可以完全擦除, 但是橡皮擦形状非圆形,而是个正方形

WhiteRainbow avatar Oct 12 '20 08:10 WhiteRainbow

确实有问题,应该是之前改透明度问题造成的...

Harley-xk avatar Oct 14 '20 01:10 Harley-xk

@WhiteRainbow 之前透明度问题的解决方案不完善,导致这里也出了问题。暂时可以通过把橡皮擦的 opacity 属性强制设为 1来解决。等后续优化了透明度那一块的逻辑之后可以彻底解决这个问题。

Harley-xk avatar Oct 14 '20 02:10 Harley-xk

@Harley-xk 另外框架如果支持只生成绘制部分的图片就更完美了,因为如果绘制比较少而画布比较大时以整块画布生成图片会有很多空白

WhiteRainbow avatar Oct 15 '20 01:10 WhiteRainbow

You can update blend options to like this it will erase your drawing completely Temp. solution

    attachment.isBlendingEnabled = true
    attachment.alphaBlendOperation = .subtract
    attachment.sourceRGBBlendFactor = .zero
    attachment.destinationRGBBlendFactor = .zero
    attachment.sourceAlphaBlendFactor = .zero
    attachment.destinationAlphaBlendFactor = .zero

KishanMakk avatar Jul 01 '21 11:07 KishanMakk