Metal alphaBlendOperation .max 奇怪的行为

问题描述

我正在使用金属绘制一些线条,我的绘图画布在 MTLRenderPassDescriptor 中有一个纹理,当我在其中绘制时启用了混合 MTLRenderPipelineDescriptor 并且我正在使用 alphaBlendOperation = .max

    renderPassDescriptor = MTLRenderPassDescriptor()
    let attachment = renderPassDescriptor?.colorAttachments[0]
    attachment?.texture = self.texture
    attachment?.loadAction = .load
    attachment?.storeAction = .store


    let rpd = MTLRenderPipelineDescriptor()
    rpd.colorAttachments[0].pixelFormat = .rgba8Unorm 
    let attachment = rpd.colorAttachments[0]!
    attachment.isBlendingEnabled = true
    attachment.rgbBlendOperation = .max
    attachment.alphaBlendOperation = .max

我可以更改画笔的属性(大小、不透明度、硬度“模糊”)。然而,前两个画笔的效果非常好,如下图所示

![Normal brush drawing

但是当我使用带有褪色边的模糊画笔时,我只有一种奇怪的行为,其中线条连接褪色区域没有按预期混合,并且在连接之间创建了一条空的小线。下图描述了这个问题,请检查单线和单点,然后检查连接,您可以非常清楚地看到这种行为

![![Drawing with blurred brush

MTLRenderPassDescriptor 甚至应该从下纹理或画笔 alpha 中选择波纹管 alpha,但是当点击第二个和第三个点时,它会创建空行而不是选择一个 alpha,就像在这些区域中使 alpha 为零一样。

这是我的褪色画笔,你可以看到有一个渐变色,但我不知道它是否有问题

enter image description here

请与我分享您必须解决的任何想法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)