【发布时间】:2019-09-03 09:56:36
【问题描述】:
我需要在图像上绘制具有某种形状的颜色。我的想法是提供一个具有给定形状(例如心形)的蒙版,然后用颜色填充矩形区域并使用蒙版将其渲染到最终图像上。
矩形的颜色是在运行时决定的——这就是为什么我不自己画彩色的心。
除了心脏(alpha 为 255)之外,黑色心脏图像在任何地方都是透明的(alpha 为 0)。 我尝试使用:
glBlendFunc(GL_DST_ALPHA, GL_ZERO)
源是纯色,目标是 Alpha 通道图像。 我使用https://www.andersriggelsen.dk/glblendfunc.php 寻求帮助。
但是底部图像(树)被用作 DST 图像... 似乎我需要一个中间缓冲区来首先渲染蓝心,然后在树上进行第二次渲染。
有什么办法呢?
【问题讨论】:
-
如果你知道最终心脏的颜色(比如蓝色),那么将它作为 uniform(你使用 OGL >1.1,对吗?)传递给着色器并使用它作为片段的颜色。并在绘制树后绘制心脏,禁用深度测试或将心脏向相机移动一点。
-
我不知道颜色 - 每次都会是不同的颜色,在运行时决定......
-
但你在画心之前就知道了,不是吗?
标签: opengl