libgdx - 将精灵颜色改为白色

时间:2014-10-16 19:45:09

标签: android libgdx fragment-shader

我想为一个精灵着色,使RGB通道全部为1,alpha保持不变。 我认为这应该使用着色器完成,但StackOverflow上的两个接受的答案(Change sprite color into whitelibgdx changing sprite color while hurt)对我不起作用 - 结果是透明的,他们不会在http://shdr.bkcore.com/工作

1 个答案:

答案 0 :(得分:1)

您只需要在片段着色器中将每个RGB替换为1.0。

顶点着色器 - 这就像SpriteBatch中的顶点着色一样,因为你没有使用顶点颜色:

attribute vec4 a_position;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;

void main()
{
    v_texCoords = a_texCoord0;
    gl_Position =  u_projTrans * a_position;
}

片段着色器 - 只从纹理中抓取alpha值。

#ifdef GL_ES
    precision lowp float; //since the only value we're storing is part of a color
#endif

varying vec2 v_texCoords;
uniform sampler2D u_texture;

void main()
{
    float alpha = texture2D(u_texture, v_texCoords).a;
    gl_FragColor = vec4(1.0, 1.0, 1.0, alpha);
}