使用Metal(vs OpenGL),颜色/ alpha混合如何在单通道渲染目标上工作?

时间:2017-11-08 16:43:46

标签: opengl metal alphablending blending

我从技术论文移植一些OpenGL代码以与Metal一起使用。在其中,它们使用只有一个通道的渲染目标 - 一个16位浮点缓冲区。但他们就这样设置混合操作:

glBlendFunci(1, GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);

只有一个频道,这是否意味着使用OpenGL,目标默认为alpha通道?

有人知道金属是否相同?我没有看到我期望的结果,我想知道Metal是否有所不同,或者是否存在控制单通道目标在混合方面的处理方式。

1 个答案:

答案 0 :(得分:2)

在OpenGL中,image format个频道明确标有其频道。只有一种单通道颜色格式:GL_R*(显然具有不同的bitdepth和其他信息)。也就是说,只有红色。虽然texture swizzling可以使纹理提取中的红色通道出现在其他通道中,但这对于帧缓冲区写入不起作用。

此外,该混合功能实际上并未使用目标 alpha。它只使用源alpha,它具有FS给它的值。因此,帧缓冲区不存储alpha的事实基本上是无关紧要的。