bonjour,
mon petit problème est que je fait un jeu en 3D, mais j'aurai voulut afficher un image 2D a l'écran sur la fenêtre ... une image qui est afficher comme si on fessait un application seulement 2D
...
je travail en c++ , avec opengl et SDL
bonjour,
mon petit problème est que je fait un jeu en 3D, mais j'aurai voulut afficher un image 2D a l'écran sur la fenêtre ... une image qui est afficher comme si on fessait un application seulement 2D
...
je travail en c++ , avec opengl et SDL
Bonjour,
Alors, voici la boucle de l'application :
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 /* Mode 3D */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective( 45.0f,800.0f/600.0f, 0.1f, 500.0f ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /* Dessin des choses 3D ici */ .... /* Mode 2D */ glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D( 0, 800, 600 0 ); /* Dessin des choses 2D ici */ ... Dessin de l'image
le problème c'est que l'image en 3D disparait , a moin que c'est moi qui ai fait un fausse manip...
je n'en ai que 1 , en début de la boucle
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
boucle princpale :
fonction affichage2D
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 while(true){ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); /******************************************** **CODE DE GESTION DES EVENEMENTS ECT *********** ********************************************/ affichage3D(); affichage2D(); }
j'ais retirer le glClear avant le glBegin ...
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 void affichage2D() { glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D( 0, 640, 480 ,0 ); //glClear(GL_COLOR_BUFFER_BIT); glColor3ub(0,0,255); glBegin(GL_QUADS); glVertex2d(0,-1); glVertex2d(0,1); glVertex2d(2,1); glVertex2d(2,-1); glEnd(); }
mais rien y fait...
La dernière fois que l'on m'a expliqué comment faire de la 3D avec de la 2D on m'a dit:
Sachant que c'est surtout un jeu de transparence, et de test de profondeur.
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 glDisable(GL_DEPTH); Begin2D(); pBackgroundTex->Blit2D(); End2D(); glEnable(GL_DEPTH); Begin3D(); ... ma scène 3D ... End3D(); glEnable(GL_BLEND); Begin2D(); ... 2D transparente ... End2D();
Les Begin(), c'est juste des fonctions pour mettre les matrices en ordre.
j'ai un embryon de solution ...
j'ai réussi a changer la couleur du fond mais pas a le metre transparent...
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 void Fenetre::afficher2D() { glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D( 0, 640,0, 480 ); glEnable(GL_BLEND) ; glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ; glTranslated(50,50,0); //change le couleur du fond , mais ne le met pas transparent glClearColor(.5,.5,.5,0); glColor4f(1,0,0,1); glTranslated(10,10,0); glBegin(GL_QUADS); glVertex2d(0,-100/2); glVertex2d(0,100/2); glVertex2d(100,100/2); glVertex2d(100,-100/2); glEnd(); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager