Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Gestion de résolutions dans le menu  (Lu 4733 fois)

0 Membres et 3 Invités sur ce sujet

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Gestion de résolutions dans le menu
« le: Février 18, 2014, 08:10:53 pm »
Bonjour,

comment implémenter un menu de gestion des résolutions ?
J'entend par la :
- Lorsque l'on change la résolution, toute la scene se décale pour faire cette résolution la


Merci

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #1 le: Février 18, 2014, 08:34:11 pm »
Tu parle de changer la résolution de l'écran, ou bien juste d'afficher tes éléments plus ou moins gros ?
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #2 le: Février 18, 2014, 09:51:39 pm »
Changer la taille des éléments, si nécessaire charger des éléments d'une résolution supérieure

Faire en sorte que la résolution des éléments augmente, comme dans un jeu PC ou tu change ta résolution :D
« Modifié: Février 18, 2014, 10:08:23 pm par MyPix »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #3 le: Février 18, 2014, 10:47:51 pm »
Et... il faut qu'on te ponde la solution, ou bien tu as un problème un peu plus précis ? :P
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #4 le: Février 19, 2014, 07:43:03 am »
Oui désolé, je m'attend plus à une technique qu'a un bout de code ^^
Bref, avant d'entamer la grosse partie code de mon jeu, comme faire en sorte que la résolution s'adapte à l'écran, comme dans Portal 2 quand tu change ta résolution.. J'aimerais un menu comme ça en fait.
J'utilise déjà un viewport pour empêcher le 'scratch' de l'image quand je la redimensionne, donc je fais comment pour adapter la taille de toute la scene sans grosse perte graphique ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #5 le: Février 19, 2014, 07:56:25 am »
Avec une vue tu peux jouer facilement sur la taille de ce qui est affiché. Pas sûr que ce soit ce que tu veux, mais comme ton problème est super vague, je ne sais pas quoi te dire d'autre.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #6 le: Février 19, 2014, 01:50:21 pm »
Bah en gros, j'aimerais que la résolution de l'écran change, par exemple, tout ce qu'il y a sur la fenêtre sera affiché en 1080p,720p,1440p en fonction du choix peut importe la taille de la fenêtre.

Mais comment ? J'aimerais vraiment faire ça, je ne sais pas comment expliquer..

Tu as déjà joué à un jeu PC ? Quand tu va des les options graphique, il y'a résolution, et quand tu la change, au plus elle est haute, au plus le jeu sera de meilleure qualité quand tu redimensionnera la fenêtre..

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #7 le: Février 19, 2014, 02:26:39 pm »
Pour ça il suffit de changer la taille de ta fenêtre (si tu es en mode plein écran, ça changera la résolution de ton écran, comme dans les jeux). Ensuite pour ce qui est de la gestion de la taille dans ton menu, ça dépend de beaucoup de choses : est-ce que tu veux un redimensionnement "bête", est-ce que tu veux garder un certain aspect ratio sur l'ensemble du menu, ou individuellement sur chaque élément du menu, etc.

Commence à faire quelque chose et puis vois au fur et à mesure. Tâtonne. Là tu te bloques sur des questions existencielles et du coup tu n'avances pas.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #8 le: Février 19, 2014, 04:23:34 pm »
Ouais, mais bon.
Donc enfait je veux redimmensionner la fenêtre, mais je veux que aussi que le reste ne change pas; En gros toutes les positions se remettent relativement au redimensionnement

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #9 le: Février 19, 2014, 05:19:22 pm »
J'ai trouvé un système.
Par contre, comme faire pour attendre la fin de la remise à niveau de la fenêtre avant d'exécuter le code ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #10 le: Février 19, 2014, 06:01:31 pm »
C'est quoi "la fin de la remise à niveau de la fenêtre" ? ???
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #11 le: Février 19, 2014, 06:02:27 pm »
Quand l'utilisateur à fini de rendimensionner sa fenêtre

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #12 le: Février 19, 2014, 06:18:22 pm »
C'est pas toi qui la redimensionne dans ton code ?

Et puis dans tous les cas tu n'as pas à attendre que ça se fasse. Ca te pose un problème en particulier, ou bien tu poses la question au cas où ?
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #13 le: Février 19, 2014, 06:25:04 pm »
Non, enfait, quand l'utilisateur redemimensionne la fenêtre, ma boucle regarde à quoi la dimension correspond :
sf::Vector2u Mako_b::tmp_screen_rs;
sf::Vector2u Mako_b::screen_rs;
sf::Vector2u Mako_b::getRes(CGameEngine *game)
{
     Mako_b::tmp_screen_rs = game->screen->getSize();
    //720p
    if(tmp_screen_rs.x <= 1280 && tmp_screen_rs.y <= 720)
    {
        Mako_b::screen_rs.x = 1280;
         Mako_b::screen_rs.y = 720;
        cout << "HD 720 SET." << endl;
    }
    //1080p
    else if (tmp_screen_rs.x <= 1920 && tmp_screen_rs.y <= 1080)
    {
         Mako_b::screen_rs.x = 1920;
         Mako_b::screen_rs.y = 1080;
        cout << "HD 1080p SET" << endl;
    }
    //1440p
    else if (tmp_screen_rs.x <= 2560 && tmp_screen_rs.y <= 1440)
    {
         Mako_b::screen_rs.x = 2560;
         Mako_b::screen_rs.y = 1440;
        cout << "HD 1440p SET." << endl;
    }
    // More than 1440p
    else if (tmp_screen_rs.x >= 2560 && tmp_screen_rs.y >= 1440)
    {
         Mako_b::screen_rs.x = 2560;
         Mako_b::screen_rs.y = 1440;
        cout << "SUCH A BIG SCREEN" << endl << "VERY 2 BIG 4 ME" << endl << "WOW." << endl;

    }
    //None, Impossible case expect error
    else
    {
        // Setting to 720p base res
         Mako_b::screen_rs.x = 1280;
         Mako_b::screen_rs.y = 720;
        cout << "Cannot find anything leik dat" << endl;
    }
    return  Mako_b::screen_rs;
}

Mais si j'attend pas, et que l'utilisateur redimensionne trop vite, ça va poser un problème qui va créée un 'redimensionnement infini' qui va faire planter ma fenêtre, et mon programme...
Je fais quoi ? J'optimise ma boucle ? Ou je crée une fonction qui compare l'ancienne valeur de la fenêtre avec la nouvelle et vérifie s'il y a un décalage (= Utilisateur redimensionnant la fenêtre)

PS: Cette boucle fonctionne tres bien, c'est juste un bug avec Event.type == sf::Resized

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Gestion de résolutions dans le menu
« Réponse #14 le: Février 19, 2014, 06:35:23 pm »
En fait quand pendant que l'utilisateur redimensionne la fenêtre, ton programme est gelé. Donc à moins que tu ne gères les évènements dans un thread séparé, tu n'as pas à attendre, ça bloque automatiquement.
Laurent Gomila - SFML developer