3

我有一个简单的单通道(8 位)位图,只有亮度数据,我想将它与现有的帧缓冲区混合,比如在 Photoshop 中使用屏幕混合模式。

因此,源的白色像素 (255) 应该产生白色,源的 50% 灰色像素 (128) 应该产生 50% 的帧缓冲区像素,源的黑色像素应该不理会结果。我也必须设置glColor4f吗?

您的一些glBlendFunc专家可以在这里帮助我吗?

4

2 回答 2

9

屏幕混合是C = S + (1 - S ) × D,所以你想要的是glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)。如果您曾经引入 Alpha 通道,如果您将图像数据保持为预乘格式,您应该仍然能够获得正确的结果。

于 2010-07-15T16:48:56.997 回答
0

这对我来说适用于 Straight alpha。

  • RGB 源 =SRC_ALPHA
  • 阿尔法源 =SRC_ALPHA
  • RGB 目的地 =ONE
  • 阿尔法目的地=ONE_MINUS_SRC_ALPHA
于 2014-04-26T02:55:49.360 回答