Salut.

J'essaye de construire une interface 2d par dessus une vue 3d, mais je n'arrive pas à afficher mes sprites 2d.

Plutot que lancer de grandes explication, je vais vous mettre un code minimal de mes enchainements OpenGL à chaque Frame. J'aimerais que vous me disiez l'enchainement parait correct. Si ça ne viens pas de cet enchainement, alors ça viens d'ailleurs dans mon code. :p

Il doit bien y avoir 1 ou 2 truc manquant qui m'empêche d'afficher mes sprite 2d.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
// Je clear ma frame
			glViewport(0, 0, viewportSize.width, viewportSize.height);
			glClearColor(0.f, 0.f, 1.f, 1.f);
			glClear(GL_COLOR_BUFFER_BIT);
			glClear(GL_DEPTH_BUFFER_BIT);
 
// Je commence le rendu 3d
// J'active le test de profondeur
glEnable(GL_DEPTH_TEST);
 
// Je draw ma scene 3d
 
// Je désactive le test de profondeur
glDisable(GL_DEPTH_TEST);
 
// Je reset ma matrice de projection + view
// Sous openGL ES 2.0, il n'y a pas de glProjection ou autre, les matrice sont passée manuellement au shader
// Donc j'utilise un système fait main qui reproduit le fonctionnement
Projection::identity(); // Reset la matrice
Matrix4 view2d; // matrice qui transform la position des objets de coordonnée [0, longueur/largeur] vers des coordonnée [-1; 1]
Projection::pushMatrix(view2d);
 
// J'active le blending
glEnable(GL_BLEND);
// Je choisi un blending alpha
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
// Pour chaque sprite
// J'applique la matrice du sprite
Projection::pushMatrix(transform);
// Je bind le shader et la texture, déclare un tableau de vertex, active les bon attributes et fais draw le sprite.
Projection::popMatrix();
 
// Je disable le blendMode
glDisable(GL_BLEND);
 
// Et je swap les buffer pour afficher la scene
eglSwapBuffers(...);
Je ne fais qu'un seul clear du color buffer et depht buffer, il y a peut-être besoin de le faire une nouvelle fois avant de draw la scene 2d? Y a-t-il d'autre fonctions pour gérer le blend?

N'importe quelle remarque peut m'aider, même un exemple sous OpenGL 1