我绘制了以固定间隔重叠的小方块,因此在“绘图应用程序”中感觉就像纹理笔刷。

目前,我使用管道描述符

pipelineDescriptor.colorAttachments[0].rgbBlendOperation = .add
pipelineDescriptor.colorAttachments[0].alphaBlendOperation = .add
pipelineDescriptor.colorAttachments[0].sourceRGBBlendFactor = .sourceAlpha
pipelineDescriptor.colorAttachments[0].sourceAlphaBlendFactor = .one
pipelineDescriptor.colorAttachments[0].destinationRGBBlendFactor = .oneMinusSourceAlpha
pipelineDescriptor.colorAttachments[0].destinationAlphaBlendFactor = .oneMinusSourceAlpha

我的目标是当两个笔触相互交叠时,我想要一种白色,如OpenGL中的Blend模式添加剂

我附了一张我现在得到的照片。

ios - 笔触在 Metal 中相互交叉时融合-LMLPHP

当笔划交叉时,它应显示为白色。

提出实现方法

最佳答案

似乎您没有在MTLRenderPipelineColorAttachmentDescriptor上设置blendingEnabled属性。另外,请确保您使用的是sRGB纹理,以便采样器将知道如何在混合时将8位值解码为线性光。

10-01 23:05