我正在寻找一种功能/方式,只有在目标像素的情况下才能进行混合。 (即后缓冲区)alpha值大于0.
我正在寻找的是类似于测试传入片段的glAlphaFunc,但在我的情况下,我想测试已经在后台缓冲区中找到的片段。
有什么想法吗?
提前谢谢
PS。我无法在绘图功能中进行逐像素测试,因为这被设置为用户的回调函数。
答案 0 :(得分:0)
等等,你的答案有些令人困惑,但我认为你所寻找的是这样的:opengl - blending with previous contents of framebuffer
答案 1 :(得分:-1)
对不起,但我认为最好回答而不是评论。
所以,让我更好地解释一下。
假设我们必须绘制一些内容(无论用户想要什么,如桌子),然后(当然在交换缓冲区之前)我们必须使用混合绘制“保存的”纹理。
假设我们必须画两个透明的盒子。如果要将这些框保存在不同的纹理中,可以通过以下方式完成:
现在,每当用户想要全部重绘时,他只需绘制主题(表格),然后使用混合函数(GL_SOURCE_ALPHA,GL_ONE_MINUS_SOURCE_ALPHA)绘制纹理。
这很好用。但是如果用户想要在一个纹理中保存两个框并且框重叠,那么我们如何保存这两个框的混合而不将它们与“已清除”的背景混合?
总结一下,整幅画的最终形象应该是一张桌子,上面有两个盒子(比方说一个黄色和一个绿色的盒子),与功能混合(GL_SOURCE_ALPHA,GL_ONE_MINUS_SOURCE_ALPHA)。