【问题标题】:How to set up the correct blend function?如何设置正确的混合功能?
【发布时间】:2024-05-19 00:15:02
【问题描述】:

我想达到如图所示的效果:

当星星穿过遮罩时,遮罩下的部分星星不显示。

我尝试使用混合功能,但我不知道如何设置正确的混合功能。 我按照这个例子(https://gist.github.com/mattdesl/6076846),但仍然无法弄清楚如何达到我想要的结果。

谁能教我如何找到混合函数来实现这个效果??

【问题讨论】:

  • 我无法从您的图像中完全理解您想要实现的目标是什么 - 图像是什么,掩码是什么?
  • 对糟糕的介绍感到抱歉。
  • 星星是精灵。并且蒙版是蒙版图像(绿色),它是在中心网格上关闭颜色蒙版绘制的,即 glColorMask(false, false, false, true)。所以效果会是这样的:当星星与中心网格重叠时,星星的一部分会隐藏在背景下。

标签: opengl libgdx mask scene2d


【解决方案1】:

您不能仅使用混合功能来做到这一点。

一种可能的解决方案是仅绘制星星的可见部分。你只需要画一个更小的四边形。

另一种解决方案是在片段着色器中将星形纹理的 alpha 乘以灰色纹理的 alpha(因此在绘制星形时需要绑定这两个纹理)。但这只有在屏幕的灰色部分是一个完整的纹理而不是由几块瓷砖组成的情况下才有效。我会选择第一个解决方案。

第三种解决方案,您再次在星星顶部绘制背景以隐藏它。

在前两种情况下,您只需要通常的 alpha 混合功能。要绘制背景,您可以禁用混合。

【讨论】:

  • 对不起,我是opengl的新手,你说我不能只使用混合功能......这是否意味着我使用错误的方式来绘制蒙版? ?此外,谢谢您的回答。
最近更新 更多