我有一个简单的单通道(8位)位图,只有亮度数据,我希望将它与现有的framebufer 混合,就像在Photoshop中使用屏幕混合模式一样。
因此,源的白色像素(255)应为白色,源的50%灰色像素(128)应使帧缓冲像素亮起50%,而源的黑色像素应仅保留结果。我是否也必须设置 glColor4f ?
你能帮我一些 glBlendFunc 专家吗?
答案 0 :(得分:5)
屏幕混合是 C = S +(1 - S )× D ,所以你想要的是glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)
。如果您引入了Alpha通道,如果您将图像数据保持为预乘格式,则仍应能够获得正确的结果。
答案 1 :(得分:0)
这对我来说对Straight alpha有用。
SRC_ALPHA
SRC_ALPHA
ONE
ONE_MINUS_SRC_ALPHA