Bonjour,
Je programme un jeu avec libGDX. Je souhaite rendre tous les pixels d'un sprite en blanc (un peu comme le flash du L-cancel dans Project M). Le premier problème c'est que la fonction Sprite.setColor(Color.WHITE) ne le met pas en blanc mais enlève toutes applications de couleur.

J'ai un peu recherché et je suis tombé sur les fameux shaders.

Voici le fichier vs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
attribute vec4 a_position;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
 
void main()
{
    v_texCoords = a_texCoord0;
    gl_Position =  u_projTrans * a_position;
}
et voici le fichier fs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#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);
}
J'ai d'abord initialisé le vertex et le fragment shader avec ces trois lignes (GameManager étant ma classe principale du jeu) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
ShaderProgram.pedantic = false;
 
GameManager.defaultShader = SpriteBatch.createDefaultShader();
 
GameManager.shaderWhiteTexture = new ShaderProgram(Gdx.files.internal("vertexShader.vs").readString(),Gdx.files.internal("fragShader.fs").readString());
ensuite lorsque j'applique shaderWhiteTexture à mon spritebatch, il ne le met pas en blanc mais en transparent....
Pourtant, il me semble que la ligne de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
gl_FragColor = vec4(1.0, 1.0, 1.0, alpha);
met en blanc les pixels... Je ne comprends pas.

J'appelle donc à votre aide!