多重与单一纹理混合

时间:2014-05-09 17:03:26

标签: opengl opengl-3

我有一个片段颜色,它是4种不同绘制的结果,每种绘制颜色不同。我使用glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)获得C1 + C2 + C3 + C4 = CR。这是完全正确的。

假设我只有红色和alpha通道,如果我的4次写入是(0.1,0.4),(0.6,0.3),(0.1,0.4),(0.6,0.3),结果颜色将是(0,313,0.3574) ),由于(0.1,0.4)+(0.6,0.3)=(0.25,0.37)使用上述混合函数,然后混合(0.1,0.4)将导致(0.19,0.382)和最终(0.6,0.3)之后我们有(0.313,0.3574)。

现在为RTT改变了渲染代码,我有两个不同的纹理,一个是C1 + C2,另一个是C3 + C4(总是使用glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA))。使用相同的混合函数将两个纹理混合在一起显然会对不同的CR产生影响。好像我无法弄清楚如何实现相同的CR颜色,将渲染分成2个纹理。我在纸上尝试了几种配置,但我找不到合适的公式来获得相同的值。

使用上面的例子,在两种纹理中我都有(0.1,0.4)+(0.6,0.3)=(0.25,0.37)具有相同的混合函数。使用该函数混合两个(0.25,0.37)将不会产生(0.313,0.3574),这是我想要实现的值。

0 个答案:

没有答案