Opengl,仅在目标像素时才会混合。 alpha值为正

时间:2016-04-19 08:16:47

标签: opengl alpha blend

我正在寻找一种功能/方式,只有在目标像素的情况下才能进行混合。 (即后缓冲区)alpha值大于0.

我正在寻找的是类似于测试传入片段的glAlphaFunc,但在我的情况下,我想测试已经在后台缓冲区中找到的片段。

有什么想法吗?

提前谢谢

PS。我无法在绘图功能中进行逐像素测试,因为这被设置为用户的回调函数。

2 个答案:

答案 0 :(得分:0)

等等,你的答案有些令人困惑,但我认为你所寻找的是这样的:opengl - blending with previous contents of framebuffer

答案 1 :(得分:-1)

对不起,但我认为最好回答而不是评论。

所以,让我更好地解释一下。

假设我们必须绘制一些内容(无论用户想要什么,如桌子),然后(当然在交换缓冲区之前)我们必须使用混合绘制“保存的”纹理。

假设我们必须画两个透明的盒子。如果要将这些框保存在不同的纹理中,可以通过以下方式完成:

  1. 使用(0,0,0,0)
  2. 清除屏幕
  3. 设置混合功能(GL_ONE,GL_ZERO)
  4. 画框
  5. 将其保存为纹理。
  6. 现在,每当用户想要全部重绘时,他只需绘制主题(表格),然后使用混合函数(GL_SOURCE_ALPHA,GL_ONE_MINUS_SOURCE_ALPHA)绘制纹理。

    这很好用。但是如果用户想要在一个纹理中保存两个框并且框重叠,那么我们如何保存这两个框的混合而不将它们与“已清除”的背景混合?

    总结一下,整幅画的最终形象应该是一张桌子,上面有两个盒子(比方说一个黄色和一个绿色的盒子),与功能混合(GL_SOURCE_ALPHA,GL_ONE_MINUS_SOURCE_ALPHA)。

相关问题