Discussion: rendre du texte

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    février 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 68
    Points : 51
    Points
    51

    Par défaut rendre du texte

    Bonjour je me demande comment font les programmes pour rendre du texte à l'écran de façon si efficace, que ce soit en rendant ligne par ligne ou en rendant un bloc de texte j'ai toujours des résultats pas térrible donc je me demande si ça ne viendrait pas du fait de la sdl.
    par exemple sur mon pc portable qui a 7ans celeron dual core cet exemple utilise 5% cpu alors que ne navigateur par exemple ne demande 5% pour afficher un site web.
    (il y a 11 appels au renderer par tour de boucle, un pour chaque image, un pour chaque rectangle et un pour le bloc de texte)
    https://img4.hostingpics.net/pics/22892820ex.jpg

    Pensez vous que je puisse arriver à la même efficacité qu'un programme lamba ou que le navigateur par exemple en passant à de l'opengl ?
    cordialement et merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 082
    Points : 5 916
    Points
    5 916

    Par défaut

    Cela dépend , sur SDL 1.2 ça sera un peu plus long , SDL2 utilise OpenGL derrière donc tu n'aura normalement pas plus de performance en l'utilisant directement.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    février 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 68
    Points : 51
    Points
    51

    Par défaut

    Ok merci mais comment font les navigateur pour rendre autant d'images et de texte aussi rapidement ? font ils une seule texture de toute la page, ce qui pourait expliquer la chose mais il y a des élements qui bougent donc je vois pas trop comment ça serait possible. Ils sont donc obligés de faire plusieurs appels au renderer et donc pourquoi c'est c'est si rapide ?

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 082
    Points : 5 916
    Points
    5 916

    Par défaut

    Il est certain que un VBO est assez rapide , une texture c'est possible , normalement tu utilise un bitmap font non ? (la génération de triangle /quad c'est assez rapide quand même :p )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    février 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 68
    Points : 51
    Points
    51

    Par défaut

    Citation Envoyé par Kannagi Voir le message
    Il est certain que un VBO est assez rapide , une texture oui , normalement tu utilise un bitmap font non ? (la génération de triangle /quad c'est assez rapide quand même :p )
    J'aurais aimé mais ça implique qu'il faille un appel de renderer pour chaque glyphe et c'est beaucoup trop lent du coup je génère une surface contenant la ligne et ensuite je la blite sur un surface qui contiendra toutes les lignes de texte. Mais étant donné que faire un appel au renderer c'est lent donc ça reste quand même lent. Pour l'exemple que j'avais donné en haut ça pose pas trop de problème mais si je veux par exemple mettre un nom en dessus de chaque monstre ça va commencer à ralentir le jeu. J'aimerais bien savoir comment font les navigateur pour rendre leur page, j'ai regardé le code de gecko mais j'y comprend rien

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 082
    Points : 5 916
    Points
    5 916

    Par défaut

    Je connais très bien SDL 1.2 et OpenGL , tres peu SDL 2 (et ces perf).

    Ce que je viens de te dire est sûrement une des méthodes la plus rapide sur OpenGL (VBO + texture bitmap) , et 5%ça correspond a peu prés a un de mes jeux 3D (collision 3D , calcul par squelette , model 3d etc ).
    Donc normalement afficher quoi 5-6k triangles sans calcul de perspective /3D , ça doit facile faire 1% sur ma machine

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    4 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 652
    Points : 18 933
    Points
    18 933

    Par défaut

    5% ça veut pas dire grand chose, vue que ça dépendra totalement de la config de chacun. Et on ne sait rien de ta boucle et méthode de rendue.
    Cela dit, avec SDL le meilleur moyen de rendre du texte est de blitter ton texte sur une surface et de rendre la surface. Cette surface doit bien sur être gardée en mémoire et non reconstruire à chaque frame.
    Avec SDL tu as aussi des manips pour booster la surface en la passant en mémoire vidéo (SDL_HWSURFACE), ça accélère normalement le blit.
    Quant aux logiciels, en général ils ont un système de rendu très différent basé sur les évènements, donc tant que tu ne fais rien l'utilisation CPU est très (très) faible, et même quand tu agis il répondra à tes inputs qui sont (généralement) plus faible que dans un jeu et n'a pas besoin de répondre aussi vite à un stimuli.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    février 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 68
    Points : 51
    Points
    51

    Par défaut

    5% c'est une quinzaine de renderCopy avec SDL2 sans aucune manip sur des surface ou quoi que ce soit après ça dépend de la machine mais je trouve ça vraimment pas terrible sachant que c'est la façon la plus efficace(renderCopy) de composer ses textures sous SDL2, donc je me dis que je pourais pas faire ce que je veux avec SDL2
    Je pense que je vais passer à opengl
    Quand tu dis 5% pour ton jeu c'est un jeu avec des textures ? et est ce qu'on peut en un seul draw sous opengl déssiner toute notre scene avec nos différents sprite ? car apparement c'est le nombre d'appel du renderer qui pose problème ou alors c'est spécifique à sdl2 ?
    merci à vous

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 491
    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 491
    Points : 155 405
    Points
    155 405
    Billets dans le blog
    10

    Par défaut

    Bonjour,

    Vous avez testé en profilant le programme ?
    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.

  10. #10
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 082
    Points : 5 916
    Points
    5 916

    Par défaut

    Citation Envoyé par aperdemak
    Quand tu dis 5% pour ton jeu c'est un jeu avec des textures ? et est ce qu'on peut en un seul draw sous opengl déssiner toute notre scene avec nos différents sprite ? car apparement c'est le nombre d'appel du renderer qui pose problème ou alors c'est spécifique à sdl2 ?
    Comme le dit bousk 5% dépend de la machine , mon jeu est un peu plus complexe (donc oui il possède des textures ), et il possède plusieurs draw call.

    Pour SDL2 je n'ai jamais vraiment regardé sous le capot de celle ci , meme si cela m'étonne , mais un seul appel opengl eut afficher plusieurs triangle /quad.

Discussions similaires

  1. Rendre du texte invisible
    Par FabaCoeur dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/08/2009, 21h42
  2. rendre le texte de l'item sélectionné lisible
    Par Paul Van Walleghem dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/12/2008, 12h56
  3. [DOM] Rendre un texte invisible
    Par LEK dans le forum JavaScript
    Réponses: 14
    Dernier message: 15/02/2008, 20h34
  4. rendre zone text enabled
    Par MSM_007 dans le forum JavaScript
    Réponses: 1
    Dernier message: 14/10/2006, 15h39
  5. [Débutant]RichEdit => Rendre le texte non sélectionnable
    Par Runlevel dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/12/2004, 00h47

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