我从技术论文移植一些OpenGL代码以与Metal一起使用。在其中,它们使用只有一个通道的渲染目标 - 一个16位浮点缓冲区。但他们就这样设置混合操作:
glBlendFunci(1, GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
只有一个频道,这是否意味着使用OpenGL,目标默认为alpha通道?
有人知道金属是否相同?我没有看到我期望的结果,我想知道Metal是否有所不同,或者是否存在控制单通道目标在混合方面的处理方式。
答案 0 :(得分:2)
在OpenGL中,image format个频道明确标有其频道。只有一种单通道颜色格式:GL_R*
(显然具有不同的bitdepth和其他信息)。也就是说,只有红色。虽然texture swizzling可以使纹理提取中的红色通道出现在其他通道中,但这对于帧缓冲区写入不起作用。
此外,该混合功能实际上并未使用目标 alpha。它只使用源alpha,它具有FS给它的值。因此,帧缓冲区不存储alpha的事实基本上是无关紧要的。