OpenGL的glBlendFunc

时间:2013-03-31 03:24:55

标签: opengl glblendfunc

OpenGL的glBlendFunc是否有办法扩展目标RGB? (即(10,50,5)至(20,100,10)

你似乎唯一能做的就是添加源rgb(乘以一些< 1的因子)

1 个答案:

答案 0 :(得分:0)

如果你想对所有的绘制操作/所有对象使用这个混合函数(并且当然有一个初始的非零值),你可以做的是以指数方式解释颜色。想象一下,在颜色缓冲区中写入的内容是某些基数的指数,例如: 2,所以添加到指数中将基本上乘以 2来增加你所用的力量。

如果您还没有这样做,那么您需要引入一个后期处理步骤。在那里你读取了颜色值并取2的颜色,这将给你最终的颜色。

当然,初始值必须是对数的。

如果您只想将某些绘制操作的颜色相乘(我希望只显示场景中的最后一些),则必须进一步拆分该过程:首先绘制“正常”内容你使用普通的颜色混合。然后将颜色转换为对数刻度(您可以使用单独的纹理),将此用于下一个应该乘以颜色的绘制操作(但是您告诉OpenGL添加颜色),然后转换回线性刻度功率。

当然您也可以使用 e 作为基础,在这种情况下,您使用自然对数和 exp 函数。