1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 12
    Points : 5
    Points
    5

    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Nom : Erreur resolution console X.png
Affichages : 123
Taille : 542,5 Ko

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # active le mode 16:9
    sdtv_aspect=3
    Du coup, l'exécution en mode console de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 22 267
    Points : 152 055
    Points
    152 055
    Billets dans le blog
    6

    Par défaut

    Bonjour,

    Lorsque vous lancez X, vous pouvez demander la résolution utilisée avec xrandr.
    Sinon, en lisant votre message, je me suis demandé si VNC ne modifiait pas la résolution d'une façon ou d'une autre (mais je doute).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 12
    Points : 5
    Points
    5

    Par défaut

    Merci LittleWhite, oui effectivement c'est ce que je me suis demandé un moment.

    Finalement, j'ai mis de côté le développement sous X et me suis concentré sur la partie console.

    Du coup j'ai "résolu" le problème. Il semble bien que la résolution native d'un écran sur la sortie composite n'ai pas d'impact sur la résolution déterminée par la carte graphique ... En gros, la résolution native de l'écran est trop petite pour le driver graphique, et le driver graphique propose plusieurs configurations possibles en fonction des paramètres introduits dans le fichier /boot/config.txt, notamment avec le paramètre 16:9

    Donc, au final, voici les infos du fichier config.txt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # uncomment this if your display has a black border of unused pixels visible
    # and your display can output without overscan
    disable_overscan=1
    
    # uncomment the following to adjust overscan. Use positive numbers if console
    # goes off screen, and negative if there is too much border
    overscan_left=16
    overscan_right=20
    overscan_top=20
    overscan_bottom=-2
    
    # uncomment for composite
    sdtv_mode=0
    sdtv_aspect=3
    Et le code Python / Pygame :

    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
    # import Pygame and system modules
    import pygame, sys
    # important all local Pygame modules
    from pygame.locals import *
    # initialize this Pygame.
    pygame.init()
    
    flags = FULLSCREEN
    # en rentrant (0, 0), le display remplit bien tout l'ecran
    screen = pygame.display.set_mode((0, 0), flags)
    
    # on cree l'image de fond
    img_bg = pygame.image.load("back.jpg").convert_alpha()
    # on recupere les infos de l'ecran pygame en fullscreen
    infoObject = pygame.display.Info()
    # et on adapte l'image de fond a la taille de la surface a dessiner
    img_bg = pygame.transform.smoothscale(img_bg, (infoObject.current_w, infoObject.current_h))
    # convert, pour la rapidite ...
    img_bg = img_bg.convert()
    
    # Puis on met a jour l'ecran
    pygame.display.update()
    Voilà, si la solution peut servir ... Donc le développement de ce type de programme sous Raspberry est différent d'un développement sous Windows par exemple, et dépend de la sortie vidéo utilisée !

Discussions similaires

  1. Problème Résolution écran
    Par loubiak67 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/01/2010, 09h07
  2. problème résolution écran
    Par damii1 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/06/2009, 11h14
  3. [Debutant]Problème de résolution écran
    Par obito dans le forum Ubuntu
    Réponses: 5
    Dernier message: 26/08/2008, 16h58
  4. Problème résolution d'écran
    Par David Fouejio dans le forum MFC
    Réponses: 9
    Dernier message: 19/03/2008, 16h46
  5. Problème suite harmonisation résolution écran
    Par socooooool dans le forum Delphi
    Réponses: 7
    Dernier message: 17/08/2006, 14h49

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