Bonjour,
Je commence à développer un jeu en 3D, mais bon j'aurais souhaité avoir mon menu en 2D. J'ai donc pensé quand utilisant deux écrans, je pourrais "passer" de l'un à l'autre sans trop de problème. Mais cela me créer des bugs assez étranges.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ecran = SDL_SetVideoMode(800, 600, 32, SDL_FULLSCREEN | SDL_DOUBLEBUF);
Code : Sélectionner tout - Visualiser dans une fenêtre à part ecran3d = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL | SDL_FULLSCREEN);
Voila pour les deux type d'affichage que je veux utiliser.
Et le code pour changer d'écran
Maintenant les bug
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 if(nouvelfenetre != fenetre){ if(nouvelfenetre==3 && fenetre==1){ //Passage de la fenetre 1 a la fenetre 3 FSOUND_Stream_Stop(musique_menu); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); SDL_Flip(ecran); //ecran3d = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL); ecran3d = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL | SDL_FULLSCREEN); fenetre = 3; }else if(nouvelfenetre==1 && fenetre==3){ //Passage de la fenetre 3 a la fenetre 1 glClear(GL_COLOR_BUFFER_BIT); SDL_GL_SwapBuffers(); //ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); ecran = SDL_SetVideoMode(800, 600, 32, SDL_FULLSCREEN | SDL_DOUBLEBUF); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); SDL_Flip(ecran); fenetre = 1; FSOUND_Stream_Play(FSOUND_FREE, musique_menu); } }
En mode pleine écran, aucun problème pour passer du menu 2d à l'écran 3d, par contre, lorsque je veux revenir au menu il ne s'affiche qu'une fois sur trois (environ). (Mais le son et la gestion des évènements marche très bien...)
En mode fenêtre, le problème est inverse. Lorsque que je lance mon écran 3d, il attend bizarrement un event avant d'afficher quoi que ce soit...sinon pour revenir au menu la aucun problème particulier...
Si quelqu’un à une explication se serais top! (Peut être qu’on ne peut tout simplement pas utiliser plusieurs SDL_SetVideoMode ….)
Partager