我正在画三个正方形,如图所示ios - 与相同的Alpha混合在 Metal 中-LMLPHP
我在用alpha 0.2添加红色。
在重叠区域中,我也希望这些区域的alpha值为0.2。现在是0.6。我该怎么做呢。当前我的管道描述符是

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

我需要在管道描述符中还是在着色器中执行此操作?

最佳答案

如果希望最终结果具有与绘制时相同的alpha,则需要将其设置为:

 pipelineDescriptor.colorAttachments[0].sourceAlphaBlendFactor = .one
 pipelineDescriptor.colorAttachments[0].destinationAlphaBlendFactor = .zero

这将意味着最终的alpha将没有来自您正在渲染的目标的贡献。

10-08 05:45