在OpenGL的glBlendFunc中有没有一种方法可以放大目标RGB?(即(10,50,5)到(20,100,10) )
似乎你唯一能做的就是添加源rgb (乘以一些<1的因子)
发布于 2013-10-13 18:39:34
如果你想对所有绘制操作/所有对象使用这个混合函数(当然还有一个初始的非零值),你可以做的就是指数地解释颜色。想象一下,在颜色缓冲区中写入的是某个基数的指数,例如2,因此添加到该指数将本质上乘以2的幂。
如果你还没有这样做,那么你需要引入一个后处理步骤。在那里你读取颜色值并取2的颜色的幂,这将给你最终的颜色。
当然,初始值必须是对数的。
但是,如果你只想为一些绘制操作增加颜色(我希望只是场景中的最后一个),你必须进一步拆分这个过程:首先在你使用普通颜色混合的地方绘制“普通”内容。然后将颜色转换为对数比例(您可以为此使用单独的纹理),将其用于下一次绘制操作,这些操作应该将颜色相乘(但您告诉OpenGL添加颜色),然后通过幂将其转换回线性比例。
当然,您也可以使用e作为底,在这种情况下,您可以使用自然对数和exp函数。
https://stackoverflow.com/questions/15726017
复制相似问题