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