我无法在Metal中设置混合。即使以Apple提供的Hello Triangle示例开头,也要使用以下代码
pipelineStateDescriptor.colorAttachments[0].blendingEnabled = YES;
pipelineStateDescriptor.colorAttachments[0].sourceAlphaBlendFactor = MTLBlendFactorZero;
pipelineStateDescriptor.colorAttachments[0].destinationAlphaBlendFactor = MTLBlendFactorZero;
和片段功能
fragment float4 fragmentShader(RasterizerData in [[stage_in]]) {
return float4(in.color.rgb, 0);
}
三角形仍然完全不透明。最后,我要实现的是通过使用不同的混合因子在两个形状之间进行混合,但是我想我将从一个简单的示例开始,以了解发生了什么。我想念什么?
答案 0 :(得分:0)
sourceAlphaBlendFactor
和destinationAlphaBlendFactor
与构建Alpha通道的混合有关。也就是说,它们控制将写入您的目标缓冲区的 alpha ,您实际上不会看到它们。您可能对写入帧缓冲区的RGB更感兴趣。
请尝试设置sourceRGBBlendFactor
和destinationRGBBlendFactor
的值。对于传统的Alpha混合,请将sourceRGBBlendFactor
设置为MTLBlendFactorSourceAlpha
,并将destinationRGBBlendFactor
设置为MTLBlendFactorOneMinusSourceAlpha