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 :
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 attribute vec4 a_position; attribute vec2 a_texCoord0; uniform mat4 u_projTrans; void main() { v_texCoords = a_texCoord0; gl_Position = u_projTrans * a_position; }
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
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); }
ensuite lorsque j'applique shaderWhiteTexture à mon spritebatch, il ne le met pas en blanc mais en transparent....
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());
Pourtant, il me semble que la ligne de codemet en blanc les pixels... Je ne comprends pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gl_FragColor = vec4(1.0, 1.0, 1.0, alpha);
J'appelle donc à votre aide!
Partager