OpenGL 的 glBlendFunc 中有没有办法放大目标 RGB? (即(10,50,5)到(20,100,10)
看来你唯一能做的就是添加源 rgb(乘以 <1 的一些因素)
最佳答案
如果您想将此混合函数用于所有绘制操作/所有对象(当然还有一个初始非零值),您可以做的是按指数方式解释颜色。想象一下,写入颜色缓冲区的是某个底数的指数,例如2,所以将加到指数实际上将乘以 2 的幂。
然后,如果您还没有这样做,则需要引入一个后处理步骤。在那里您读取颜色值并取 2 的颜色次方,这将为您提供最终颜色。
当然,初始值必须是对数。
但是,如果您只想为一些 绘制操作增加颜色(我希望只有场景中的最后一个),您必须进一步拆分该过程:首先绘制“正常”内容,其中你使用正常的颜色混合。然后将颜色转换为对数标度(您可以为此使用单独的纹理),将其用于下一个应该乘以颜色的绘制操作(但您告诉 OpenGL 添加颜色),然后通过获取转换回线性标度电源。
当然你也可以使用e作为底数,在这种情况下你使用自然对数和exp函数。
关于OpenGL 的 glBlendFunc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726017/