【发布时间】:2015-07-06 12:23:00
【问题描述】:
我正在使用 Android 中的 OpenGL ES 2 创建一个 2D 游戏,其中包含一个健康栏。随着生命值的降低,生命值条会在 5 种颜色之间变化(绿色、黄绿色、黄色、橙色、红色)。生命值条的纹理来自纹理图集,我不想在纹理图集中为每种颜色添加一个条(将来更改这些颜色也会更容易)。
这是我想使用 GLSL 重现的原始绿色。其底色是#77ee9a。
我尝试的是创建一个黑白版本的纹理。此处的基础绿色变为#aeaeae。
然后,我将我想要的颜色与这张黑白图像相乘。我意识到这不会完全正确,所以我取了我想要的绿色(#77ee9a),然后在相乘之前除以它的黑白等效项(#aeaeae)。结果是:
我意识到,除以灰色会导致原始绿色的 rgb 值的绿色部分超过 255,从而在图像的明亮部分周围产生伪影。
我不确定是否有更好的方法来实现这种着色效果,但我希望有一个解决方案可以让我这样做。
如果没有,我可以创建两个纹理,一个是条形的纯白色,另一个是透明效果。然后我可以叠加这些,但在游戏中需要另一个纹理和另一个精灵。
谢谢!
【问题讨论】:
标签: android opengl-es opengl-es-2.0 glsles