如何使用不同的颜色渲染相同的纹理?

时间:2014-11-12 16:35:21

标签: colors 3d libgdx textures

我在黑色背景上有一个非常简单的白色纹理纹理,我希望能够为白色部分指定不同的颜色,而不更改源纹理:

enter image description here

在libgdx中是否有内置方法可以做到这一点,或者我是否必须编写自定义着色器(如果有,那么最好的方法是什么)?

注意:我使用3D api,所以我的问题是在ModelBatch,Materials以及它们如何用于渲染3D几何体的上下文中。

1 个答案:

答案 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.