创建一个alpha蒙版(glBlendFunc现在做什么?)

时间:2013-06-26 23:49:11

标签: c++ opengl alphablending blending

我正在尝试渲染一个方形边框(可变厚度,因此线条不起作用)。我在想4个四边形可以做到这一点(所有相同的尺寸,只为每一侧旋转和翻译)。然后我想,2个四边形应该这样做 - 画一个然后在中间画一个小的。但是,我实际上是试图用第二个在盒子里创建一个“洞”。我想我可以应用一些混合功能来做我想要的。

我不太明白会发生什么。

我理解了一些因素,但我不明白源和目的地的定义。 src是该位置的现有像素还是我打算放在那里的像素?目标似乎是直观的调用缓冲区,因为这最终我计划放置像素。

如果是这种情况,当我放下第一个盒子时,我会破坏像素数据,无论我如何尝试混合,我都会失败。它是否正确?这仍然让我无法理解参数意味着什么(sfactor,dfactor)如果我将GL_DST内容放在src和dst中会发生什么?对这些如何运作有一个很好的解释吗?我找到了

http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquation.xml

http://www.andersriggelsen.dk/glblendfunc.php

但是没有很好的例子说明如何将这些因素实际应用于像素数据。

1 个答案:

答案 0 :(得分:1)

目标是视频缓冲区(帧缓冲区)的像素数据,源是要混合的像素数据。
它在文中说:

framebuffer(''destination''color)

新像素(''来源''颜色)