我在黑色背景上有一个非常简单的白色纹理纹理,我希望能够为白色部分指定不同的颜色,而不更改源纹理:
在libgdx中是否有内置方法可以做到这一点,或者我是否必须编写自定义着色器(如果有,那么最好的方法是什么)?
注意:我使用3D api,所以我的问题是在ModelBatch,Materials以及它们如何用于渲染3D几何体的上下文中。
答案 0 :(得分:2)
事实证明,如果材质具有TextureAttribute.Diffuse和ColorAttribute.Diffuse,则从纹理派生的颜色值将乘以颜色属性定义的值,如{{{ 3}}:
#elif defined(diffuseTextureFlag) && defined(diffuseColorFlag)
vec4 diffuse = texture2D(u_diffuseTexture, v_diffuseUV) * u_diffuseColor;
因此,对于我的情况,我可以简单地设置颜色属性的值,这将产生所需的结果 - >纹理的黑色部分将保持不变,因为零(黑色)乘以X将导致零;纹理的白色部分将更改为通过颜色属性设置的任何颜色,因为1(白色)乘以X将导致X.