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