OpenGL混合; 通过示例,源颜色和目标颜色究竟是指什么

joh*_*ers 9 opengl

我对这意味着什么感到困惑:

对特定缓冲区进行混合时,片段输出中的颜色称为源颜色.缓冲区中当前的颜色称为目标颜色.

(来自OpenGL维基)

我理解混合方程本身是什么,但我不完全理解源颜色目标颜色之间的区别.

任何人都可以提供示例或更具体的定义吗?

h4l*_*c0n 8

保持简短:

  • 源颜色:这是您当前使用的颜色.例如,在使用glColor4f(...)时设置操作的源颜色.
  • 目标颜色:这是视频缓冲区中某个坐标中片段的颜色(像素,如果您更喜欢这种方式,尽管它不一定相同).

通常,人们使用的原因是:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)

是因为你想使用你刚才提供的alpha值.您可以使用它来乘以当前颜色,然后使用(1 - alpha)并使用它来乘以该坐标中缓冲区的当前颜色.

因此,如果使用glColor4f(1.0f,1.0f,1.0f,0.6f)绘制四边形并且缓冲区填充glColor4f(1.0f,0.0f,0.0f,1.0f),则最终操作将为:

(1.0f, 1.0f, 1.0f) * ALPHA + (1.0f, 0.0f, 0.0f) * (1 - ALPHA)
(0.6f, 0.6f, 0.6f) + (0.4f, 0.0f, 0.0f)
Run Code Online (Sandbox Code Playgroud)

所以最终的颜色是(1.0f,0.6f,0.6f)