Opengl es 在OpenGL ES中混合两个精灵而不影响背景

Opengl es 在OpenGL ES中混合两个精灵而不影响背景,opengl-es,shader,blending,Opengl Es,Shader,Blending,基本上我想要实现的是如下所示的精灵高亮动画效果 这个想法是,白色半透明渐变精灵在另一个精灵的顶部从左到右移动,使用类似叠加Photoshop的混合模式。困难的部分是,顶部渐变精灵应该只在下方精灵的可见像素上绘制。渐变叠加的其他部分应该被丢弃,以不影响背景或下面的其他精灵,如最右侧图像上的精灵 是否有可能通过OpenGL混合模式的巧妙组合实现这种效果,以及如何实现,或者我必须创建一个自定义着色器来组合这些精灵 背景:我在OpenGL ES 2.0中使用libgdx,该应用程序在桌面、Android

基本上我想要实现的是如下所示的精灵高亮动画效果

这个想法是,白色半透明渐变精灵在另一个精灵的顶部从左到右移动,使用类似叠加Photoshop的混合模式。困难的部分是,顶部渐变精灵应该只在下方精灵的可见像素上绘制。渐变叠加的其他部分应该被丢弃,以不影响背景或下面的其他精灵,如最右侧图像上的精灵

是否有可能通过OpenGL混合模式的巧妙组合实现这种效果,以及如何实现,或者我必须创建一个自定义着色器来组合这些精灵


背景:我在OpenGL ES 2.0中使用libgdx,该应用程序在桌面、Android和iOS上运行。

有很多方法可以做到这一点。最简单的一个:

您应该在一次过程中渲染button和hilight。在片段着色器中,在对按钮纹理和hilight纹理计算进行采样后,混合的输出颜色可以是mixc1、c2、c2.a和alpha,仅作为按钮纹理alpha。当然,以通常的方式启用混合:srcalpha,1-srcalpha