Je travaille sur un projet de jeu libGDX (bibliothèque au-dessus de LWJGL) et j'utilise l'IDE Intellij IDEA depuis plusieurs postes de travail différents :
- Ordinateur portable Windows 7 x64 avec deux écrans (1920x1080 et 1600x1200), nVidia GT540M.
- Ubuntu 12.04 LTS sur un ordinateur portable avec un seul écran (1366x768), graphique intégré Intel.
- Ubuntu 12.04 LTS sur un bureau avec deux écrans (1920x1080 et 1280x1024), nVidia GTS 450.
J'utilise l'OpenJDK pour Java 6 sur les boîtes Ubuntu, et Sun/Oracle Java 6 sur la boîte Windows (j'ai entendu dire que Java 6 était celui à utiliser pour la compatibilité avec Android).
Lors du fonctionnement en plein écran :
- Ordinateur portable Windows 7 : fonctionne bien.
- Ordinateur portable Ubuntu : fonctionne bien.
- Bureau Ubuntu : l'image d'arrière-plan est affichée en grand, et seule une partie tient sur l'écran. +
En y regardant de plus près, je vois que les appels à Gdx.graphics.getHeight() et Gdx.graphics. getWidth() renvoient la taille du rectangle nécessaire pour couvrir les deux écrans, dans mon cas 3200x1080, mais quand je dis à mon jeu de fonctionner en plein écran, il n'utilise qu'un seul des écrans, donc les caméras sont réglées sur 1920x1080, mais le mouvement de la caméra et le panoramique de la carte en mosaïque pensent qu'ils ont 3200x1080 pour travailler, ce qui rend les choses déformées et inutilisables (puisque le personnage peut sortir de l'écran vers la droite).
Je suppose que mon problème vient en fait des tailles renvoyées par l'appel getScreenSize() de awt.Toolkit, mais je ne sais pas comment l'interroger plus en profondeur pour obtenir la taille de l'écran qu'il utilisera réellement lorsque je passerai en plein écran.
Mon DesktopStarter obtient la taille de l'écran et définit le mode plein écran comme suit :
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
cfg.width = screenDimension.width;
cfg.height = screenDimension.height;
cfg.fullscreen = true;
new LwjglApplication(new Game1(), cfg);
Existe-t-il une solution pour obtenir la hauteur/largeur de l'affichage dans lequel le "plein écran" sera effectivement lancé ?
Le problème que je rencontre, c'est qu'en exécutant le fichier game.jar, en quittant le jeu, puis en l'exécutant à nouveau, de manière répétée, différents modes d'affichage apparaissent dans la liste des modes renvoyés par Gdx.graphics.getDisplayModes() -- comme P.T. l'a fait remarquer ci-dessous, il s'agit d'une enveloppe fine autour de la fonction LWJGL Display.getAvailableDisplayModes()
. Pourquoi cela se produit-il ? Pourquoi un ensemble différent de modes serait-il présenté lors des exécutions suivantes sur Ubuntu ?
edit : selon la suggestion de P.T., mettre les références LWJGL en question, puisque cela semble être LWJGL qui fournit la liste des modes d'affichage.
Merci !