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

Composants graphiques Android Discussion :

SurfaceView & Canvas : Dessin de mauvaise qualité


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut SurfaceView & Canvas : Dessin de mauvaise qualité
    Bonjour;
    Voilà, je suis en train de développer un jeu. Au départ, le rendu de ce jeu se dessinait dans le canvas d'une View. Mais pour des raisons d'optimisation (car c'était assez lent sur un View), je suis passé sur un SurfaceView pour dessiner le rendu.

    Cependant, je constate que le rendu sur un SurfaceView est de très mauvaise qualité par rapport à ce qui s'affichait sur un View. Le rendu se fait via des primitives classiques du canvas (drawLine, drawCircle...).

    J'aimerai savoir d'où vient ce changement de qualité d'image dans le rendu entre une classe héritant de View, et une classe héritant de SurfaceView?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    As tu essayé d'activer explicitement l'anti-aliasing ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myPaint.setAntiAlias(true);

  3. #3
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut
    Oui biensur;
    Ce qui est bizarre en fait, c'est que depuis ce changement de classe; le jeu se dessine toujours correctement dans l'Emulateur; mais crade sur mon téléphone (alors qu'avec la classe héritant de View, elle s'affichait propre)... Il faudra que je teste avec d'autres téléphones.

    Par contre, pourquoi un affichage en 2D avec les primitives du canvas prend énormément plus de ressources en terme de temps qu'un rendu en OpenGL?
    C'est quand même bizarre que je commence à avoir des lags dès qu'il y a plus de 20 cercles qui se dessinent simultanément...

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Juste deux questions.
    C'est quoi ton téléphone ?
    As-tu essayé ton code sur d'autre téléphone avant de mettre en cause ton code ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut
    Un Samsung TEOS;
    C'est ce que j'ai pensé aussi, puisque sur l'émulateur tout est beau (mais lent.. normal c'est un émulateur).

    J'ai une autre question:
    Que prends plus de temps soit entre dessiner un cercle (avec un effet blur) à chaque boucle; ou soit dessiner une fois ce cercle sur une bitmap; et coller ce bitmap à chaque boucle?

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Salut,

    ta question est pertinente, et elle me fait immédiatement penser au double-buffer. Je n'ai pas encore consulté les spécifications pour m'exprimer très précisément, mais il me semble qu'en matière de dessin des éléments graphique en java, il y a soit la possibilité de dessiner dirrectement dans le composant, ce qui sous-entends de dessiner tous les cercles un après l'autre. Soit de faire la même chose mais pas sur l'écran, dans un buffer en mémoire (je crois volatile) qui est lui envoyé en une seule fois à l'écran. Ce qui revient à dire, faire apparaître le dessin de tous les cercles en même temps. Comme je ne l'ai pas vérifié, il est possible que la technique du double-buffer soit intégrée par défaut et déjà utilisé, mais si ce n'est pas le cas, la mettre en œuvre devrait améliorer la situation ?
    En tout cas, c'est peut-être une piste...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Son de tres mauvaise qualité sous Mandriva
    Par Cazaux-Moutou-Philippe dans le forum Mandriva / Mageia
    Réponses: 12
    Dernier message: 06/07/2007, 19h19
  2. [FLASH 5] Mauvaise qualité des captures d'écran
    Par fredhali2000 dans le forum Flash
    Réponses: 1
    Dernier message: 11/08/2006, 14h53
  3. [GD] Mauvaise qualité des textes en jpeg
    Par coolmic dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/05/2006, 18h15
  4. [ImageMagick] Texte -> image : très mauvaise qualité ?
    Par Yusuke dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/11/2005, 19h17
  5. [canvas]dessiner un pixel
    Par bakonu dans le forum 2D
    Réponses: 3
    Dernier message: 08/07/2005, 22h51

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