IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Changement de résolution


Sujet :

SDL

  1. #1
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut Changement de résolution
    Bonjour,

    J'ai un petit soucis, et je ne vois pas trop d'où vient le problème.
    J'ai un petit menu, et dedans j'ai une option pour changer la résolution. Le changement se fait bien, la nouvelle fenêtre se créer, mais les textures utilisées sur cette fenêtre disparaissent :-\

    J'utilise SDL pour la gestion de la fenêtre, et OpenGL pour l'affichage.
    Qu'est sont les fonctions à (re)appeler pour correctement réinitialiser le tout ?

    Pour l'instant, quand je change de résolution, je fait appel à cette fonction :
    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
    40
    41
    42
    43
    44
    45
    46
    47
     
    bool Lanceur::init() {
     
      int larg = opt->getInteger(OPTION_NAME_LARGEUR);
      int haut = opt->getInteger(OPTION_NAME_HAUTEUR);
     
      if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        cerr << "Impossible d'initialiser SDL " << SDL_GetError() << endl;
        return false;
      }
     
      if (SDL_SetVideoMode(larg, haut, 32, SDL_OPENGL | SDL_HWSURFACE) == NULL) {
        cerr << "Impossible de définir la surface de l'écran" << endl;
        return false;
      }
     
      /* Mettre en place le double buffer */
      SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
     
      glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //noir
     
      glClearDepth(1.0);
     
      glDepthFunc( GL_LEQUAL );
      glEnable(GL_DEPTH_TEST);
      glShadeModel(GL_SMOOTH);
     
      glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	
     
      /* Selectionne le type de transparence */
      glBlendFunc( GL_SRC_ALPHA, GL_ONE );
      glEnable(GL_BLEND);        	 // Active la transparence
     
      glMatrixMode(GL_PROJECTION);    // On selectionne la matrice de Projection
      glLoadIdentity();                       // On la reinitialise
      glViewport(0,0,larg,haut);           // On réinitialise notre ViewPort
     
      glOrtho(0.0f,larg,haut,0,-100.0f,100.0f);  // On définit notre vue orthogonale
     
      glMatrixMode(GL_MODELVIEW);    // On sélectionne la matrice des modèles
      glLoadIdentity();                       // On la réinitialise
     
      glEnable(GL_LIGHTING);
      glEnable(GL_LIGHT0);
     
      return true;
    }
    Est ce qu'il manque quelques chose dans cette fonction ?
    Ou alors tout simplement il faut que je re charge mes textures ? et si oui pourquoi ? un changement de résolution fait qu'elle "disparaisse" de la mémoire ?

    Merci d'avance à ceux qui prendront le temps de lire et de me répondre.
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par MrDuChnok
    Est ce qu'il manque quelques chose dans cette fonction ?
    Ou alors tout simplement il faut que je re charge mes textures ? et si oui pourquoi ? un changement de résolution fait qu'elle "disparaisse" de la mémoire ?
    Sans lire le code (déjeuner oblige), il est sûr qu'il faut recharger tout le contexte OpenGL : textures, display lists, ...

    Pourquoi ? Parce que c'est une nouvelle fenêtre qui est créée donc faut recommencer le tout...

    Généralement, les jeux demandent de redémarrer ou alors les chargements ne se font que lors de la création du jeu pas dans le menu directement...

    Jc

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    ok d'accord, c'est bien ce que je pensais mais maintenant j'ai la confirmation.

    Merci !
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    je ne sais pas si cela peut pposer problème mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Init(SDL_INIT_VIDEO)
    ne doit normalement pas être appelé plusieurs fois

    tu initialises au début de ton programme avec SDL_Init
    tu quitte à la fin du programme avec SDL_Quit
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par shenron666
    je ne sais pas si cela peut pposer problème mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Init(SDL_INIT_VIDEO)
    ne doit normalement pas être appelé plusieurs fois

    tu initialises au début de ton programme avec SDL_Init
    tu quitte à la fin du programme avec SDL_Quit
    Exact, bien que cela est un peu différent que ton problème (cf. http://www.developpez.net/forums/sho...d.php?t=194798) mais appelé plusieurs fois SDL_Init ne fera rien dans l'implémentation actuelle de la fonction.

    Mais je ne pense pas que ce sera forcément vrai tout le temps. Il serait mieux de se débrouiller pour que ce soit appelé une seule fois...

    Jc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changement de résolution
    Par Linio dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 19/04/2006, 18h18
  2. [M1][W1][N1][D1] Comment détecter un changement de résolution?
    Par jazz matazz dans le forum Contribuez
    Réponses: 6
    Dernier message: 04/03/2006, 21h20
  3. Sites Web et changement de résolution
    Par trax020 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/11/2005, 13h37
  4. Changement de résolution
    Par Duan dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 19/10/2005, 01h41
  5. [glut] changement de résolution
    Par khayyam90 dans le forum GLUT
    Réponses: 4
    Dernier message: 12/07/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo