1 pièce(s) jointe(s)
Pygame, Raspberry et problème résolution écran
Bonjour !
Je me lance dans la programmation sous Python avec le module Pygame pour réaliser un tableau de bord moto (un chrono type Alfano dans un premier temps).
Pour des questions de rapidité d'exécution et de démarrage, je vais travailler sans X. Pour la facilité de développement et la comparaison de rapidité, j'ai installé Pixel sur une Raspbian Jessie Lite avec Samba et un server Ultra VNC.
Le Raspberry est relié à un écran LCD donné pour une résolution de 480x272. Dans un premier temps afin que l'affichage console ou Pixel remplisse la totalité de l'écran, j'ai dû régler certains paramètres dans le fichier /boot/config.txt :
Code:
1 2 3 4 5 6 7
| disable_overscan=1
overscan_left=5
overscan_right=12
overscan_top=20
overscan_bottom=11
framebuffer_width=480
framebuffer_height=320 |
Avec cette configuration, l'interface Pixel s'affiche correctement, tout comme la console.
J'ai réaliser les premiers programmes de test sous X sans problème avec, dans le programme Python, la configuration de l'écran suivante :
screen = pygame.display.set_mode((480, 320), pygame.FULLSCREEN)
Le problème s'est posé lors du passage en mode console pour le test ; donc les commandes de la console s'affichent bien sur tout l'écran, mais lorsque je lance mon programme la résolution change et l'écran devient plus petit ... Voici une image de comparaison :
Pièce jointe 258845
A gauche, l'image de l'écran en mode console, à droite sous Pixel. En mode console, lorsque je lance le programme, c'est bien la résolution de l'écran qui change (la souris ne peut pas sortir de la fenêtre du programme).
Après moult recherches, j'ai tester la commande Pygame suivante afin de vérifier les résolutions disponibles sous Pixel et en mode console :
Code:
1 2 3 4 5 6 7 8
| import pygame, sys
from pygame.locals import *
pygame.init()
print pygame.display.list_modes()
pygame.quit()
sys.exit() |
Sous Pixel, j'obtiens bien 480x320 ; par contre en console j'obtiens une série de résolutions en 4:3 ou 1:1. Première question, pourquoi ? Dans la mesure où la résolution a été fixée dans le config.txt, pourquoi ce changement entre le mode console et le mode X ? Et surtout, pourquoi dans la mesure où la console remplie tout l'écran le programme ne fait pas de même ?
En continuant de fouiller, j'ai obtenu une solution "bancale" en masquant la résolution précédemment établie et en ajoutant un autre paramètre dans le fichier config.txt :
Code:
1 2
| # active le mode 16:9
sdtv_aspect=3 |
Du coup, l'exécution en mode console de la commande
Code:
pygame.display.list_modes()
me donne une série de résolution incluant du 16:9, dont la plus basse est : 896x416 ...? Et en mettant ces paramètres dans mon programme Python, celui ci rempli bien cette fois tout l'écran.
Problème, l'image est moins "propre" en mode console ! et surtout la résolution ne correspond plus du tout à celle de l'écran !
Question : est ce que le problème vient du pilote raspbian qui ne gère pas la résolution native de l'écran en mode console ? Et pourquoi le programme utilisant Pygame me change la résolution lorsque je le lance en mode console ?
Je suis conscient que c'est un problème très particulier, mais je suis preneur de tout conseil ! merci par avance.