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

SDL Discussion :

SDL_RenderCopy lent ?


Sujet :

SDL

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

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut SDL_RenderCopy lent ?
    Bonjour, jusqu'à présent je trouvais la sdl vraimment top mais je viens de m'apercevoir que les RenderCopy ralentissaient gravement le programme. J'ai créé un système qui met tous les glyphes en cache(1 SDL_Texture /glyphe) et je les rend à l'écran avec une class Text vous pouvez voir mes test ici:

    ça fait la même chose si les rendercopy travaillent sur une même texture(voir vidéo).
    Je pensais que le renderer était censé améliorer les performances par rapport à la sdl 1.2 mais au final faut toujours tout mettre en cache(on peut jamais éditer les pixels à la volée) et en plus si c'est lent j'en vois plus l'intérêt.
    Donc je me demande s'il n'y aurait pas un technique spécifique à utiliser pour ne pas ralentir(gravement) le programme au fur et à mesure que l'on rajoute des texture.
    Merci d'avance.

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

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    moi je que je comprend pas c'est que dans le premier tu as 4500 , dans le dernier 1500 .
    Pourtant la différence dans les deux c'est ta classe Text (enlever/mis) , donc pour moi c'est clairement ta classe Text qui a fait ralentir ton programme (et perso je trouverais pas cela étonnant ).

    (Au pire tu donne ton code source).

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

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    la classe Text n'est qu'une surcouche faisant appel à LayerList::Add_Char qui fait la même chose que LayerList::Add c'est à dire ajouter un layer à la liste, je l'ai utilisée juste pour ne pas avoir à faire 30 layer à la main. Au final dans la boucle principale c'est la même chose, que l'on appelle Text ou LayerList::Add.

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ben je n’ai pas le code sous les yeux mais un text est forcément plus long tout dépend de comment tu la implémenté aussi

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

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Je viens de faire tout un tas de test avec un programme de 30 lignes, avec un for allant de 0 à 30 faisant 30 RenderCopy d'une seule texture et je tombe à 1000fps (la texture est plus grosse que les glyphes de mon test vidéo donc ça se comprend). Je pense donc qu'il y a une autre méthode ou alors que c'est une pratique courante de se restreindre à -100 RenderCopy par frame ?
    cdt

    edit: bon je pense que la mise en cache des glyphes ne poura pas me suffir il faudra que je combine deux méthodes, la mise en cache + un système qui crée des textures à la volée pour les longs textes. Par exemple pour les textes qui changent souvent(décompte,score,dégâts,etc) utiliser ceux en cache et sinon créer une texture. Sinon pour le reste ça sera pas utile de charger à la volée et ne ferait que ralentir le programme. Si quelqu'un a une bonne idée à me partager je toujours suis preneur.

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    moi je te conseille pour le text utilise un bitmap Font
    ça allégera pas mal les perf je pense

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Cet article indique une chose très importante d'après moi :
    Moralité : n'utilisez jamais les FPS pour des analyses de performances.
    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.

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Oui mais c'est un peu faux , ce n'est pas ne pas faire confiance au FPS , mais plutôt son interprétation.

    Par exemple dans son cas il a 4500 FPS , mais s'il arrive a économisé 10 cycle a chaque frame, il économisera au total 45000 cycle , cycle qui sera encore utilisé pour le rendu.
    Inversement s'il pert 10 cycle pour chaque rendu il baisera de beaucoup.

    Mais dans son cas je pense que le souci vient du texte qui n'est pas un bitmap font et donc qui est très long.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    J'étais d'accord avec ce qui a été dit précédemment (et les solutions apportées). Mais passé de 4000 à 1000 FPS n'est pas horrible. Cela peut simplement vouloir dire que le rendu prend une 1ms de plus (soit 2ms, alors qu'avant il ne prenait que 1ms).
    Sinon, pour chaque texte fixe, il est évident qu'il faille les mettre dans une texture "de travail" et ne pas recalculer à chaque fois.
    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.

Discussions similaires

  1. BDD sur réseau très très très lent...
    Par ericain dans le forum Access
    Réponses: 12
    Dernier message: 20/02/2015, 17h17
  2. DBExpress est plus lent que BDE?
    Par palassou dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 08h39
  3. BDE lent sur XP PRO
    Par Daniel Nespoulous dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/06/2004, 14h12
  4. TList lente
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/02/2004, 01h01
  5. SQL Server trés lent
    Par arwen dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 07/11/2003, 14h45

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