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

Programmation multimédia/Jeux Python Discussion :

[Pygame] rotation de la surface screen


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut [Pygame] rotation de la surface screen
    Binjour,
    Je continue toujours avec mon projet de jeu vidéo , cette fois-ci , j'ai essayé de faire une rotation sur l'affichage de la surface principale ecran (screen) (à l'aide de la fonction pygame.transform.rotate).
    Mais le résultat était catastrophique autant en terme de vitesse de déroulement du jeu qu'en terme de qualité d'image de l'image transformée résultante
    car la transformation se reproduit à chaque pas du jeu (frame);
    N' y aurait il pas une solution alternative par hasard ?
    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 76
    Par défaut
    Salut !

    Mon premier conseil c'est d'éviter d'exécuter ce genre d'opérations avec pygame Etant donné que la surface "écran" est souvent énorme (800x600 voir plus) la rotation est d'autant plus longue... surtout qu'il faut ensuite rafraichir la totalité de l'écran et ça c'est vite mortel en matière de vitesse. ^^ Mais bon, ça c'est pas le genre de remarque qui aide beaucoup... je veux bien en convenir héhé.

    Pour la perte de qualité, c'est normal si tu effectues la rotation à partir de l'image déjà pivotée. Quand pygame effectue la rotation il y a une petite perte de qualité. Si tu prends cette image pour faire une nouvelle rotation, les erreurs s'accentuent et ainsi de suite...
    Pour faire une belle rotation il faut toujours partir d'une image source "propre" que tu ne modifies pas.

    J'ai cependant quelques pistes à te proposer pour faire tourner tout l'écran :

    1) Tu peux peut-être simplement créer à l'avance une animation de l'effet voulu. Ainsi tu évites l'appel de pygame.transform. Certes, si l'image à tourner est différente chaque fois cette solution n'est pas possible.

    2) La meilleure solution que je vois, en dehors du passage sur OpenGL ou quelque chose de similaire, c'est de diminuer l'intervalle entre les rotations. Aulieu d'effectuer la rotation toutes les frames, fais le toutes les 200, 100 voir 50 millisecondes. Souvent cela ne change pas grand chose au niveau du visuel, mais pour le temps de calcul et le lag, c'est phénoménal

    En espérant que ça fasse avancer le schimilibi.. le chmil.. enfin le truc quoi

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut
    merci beaucoup Clic4 , des idées considérables , je prenderai ça en compte

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

Discussions similaires

  1. Rotation d'une surface
    Par millie dans le forum Contribuez
    Réponses: 4
    Dernier message: 21/10/2016, 02h25
  2. Rotation et zoom d'une surface
    Par Sivrît dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/12/2010, 15h06
  3. [pygame]per pixel alpha surface
    Par josmiley dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 06/10/2009, 13h58
  4. [Pygame] detection collision en utilisant surface.get_at
    Par Gavroche7 dans le forum Programmation multimédia/Jeux
    Réponses: 5
    Dernier message: 24/01/2009, 09h18
  5. SDL_FillRect et surface screen.
    Par ironzorg dans le forum SDL
    Réponses: 4
    Dernier message: 10/11/2008, 15h53

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