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

OpenGL Discussion :

Optimisation(augmenter FPS)


Sujet :

OpenGL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut Optimisation(augmenter FPS)
    Salut,

    J'ai une map avec des textures bitmap uniquement sur des carrée des 50*50, ou 50 *30.

    Avec des textures 256*256 => FPS = 65
    Avec des textures 128*128 => FPS = 90

    Je me demandais donc, si le fait de mettrre des textures JPG, qui sont beaucoup moins lourdes et avec une qualité proche, ferait encore augmenter mes FPS ???

    Sinon quel format de textures me conseiller vous : BMP, TGA, JPG ???

    J'ai une Liste d'affichage, je l'avais remplacée par des vertex arrays
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glDrawArrays(GL_QUADS, 0, g_Object.m_numOfTriangles*4);
    mais les FPS ont chutés !!!

    Les vertex array dépendent -ils plus de la carte vidéo ???(j'ai une radeon 9200 SE ... pas top )

    si vous avez des conseils pour optimiser (niveau FPS ou autre) je suis preneur

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je me demandais donc, si le fait de mettrre des textures JPG, qui sont beaucoup moins lourdes et avec une qualité proche, ferait encore augmenter mes FPS ???
    Ta texture ne sera jamais stockée en JPG, une fois chargée ce ne sera qu'une suite de pixels, peu importe le format de départ. Ce que tu peux optimiser par contre c'est le format interne, par exemple en diminuant le nombre de bits par pixels.

    si vous avez des conseils pour optimiser (niveau FPS ou autre) je suis preneur
    Il existe mille et une optimisations à faire, mais ça dépend fortement de ton application, donc là sans savoir ce que tu fais et surtout ce qui est source de ralentissement dans ton programme, on ne peut rien dire.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    Ta texture ne sera jamais stockée en JPG, une fois chargée ce ne sera qu'une suite de pixels, peu importe le format de départ. Ce que tu peux optimiser par contre c'est le format interne, par exemple en diminuant le nombre de bits par pixels.
    Pourrais tu expliquer un peu plus STP ?? Je comprends pas trop...

    Je viens de doubler mes FPS !!!!

    Avant je faisais dans ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LoadTexture(image, num);
    Maintenant je fais ça dans l'initialisation et ensuite dans ma liste je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glBindTexture(GL_TEXTURE_2D, num);
    Mes FPS ont doublé !!!
    J'était sur le c... !!!

    Je pense que je peu beaucoup optimiser mon code ...

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ah oui effectivement, si tu chargeais ta texture à chaque frame...

    Ce que je voulais dire, c'est qu'une fois chargée et envoyée à OpenGL, ta texture ne sera pas stockée avec le même format que celui du fichier d'origine. BMP, JPG, TGA, c'est du chinois pour OpenGL, ça ne veut rien dire. Le format avec lequel sera stockée ta texture, c'est toi qui le choisis lorsque tu la charges (genre GL_RGBA).

    D'ailleurs tu devrais t'en rendre compte par toi-même, à moins que tu utilises une bibliothèque pour le chargement des textures ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    Ah ok ...
    J'avais pas compris.
    Oui en effet les fichiers sont traités par Opengl.

    Je viens de faire des tests intéressant qui est en accord avec ce que tu dis :

    Toutes les images sont en 256*256.

    JPG => 89 FPS
    TGA =>89 FPS
    BMP =>89 FPS

    ==> donc aucun format n'est meilleur(ce que je comprend maintenat grâce à toi, puisque les images sont toutes mises sous le même "format" avec opengl).

    Par contre :

    JPG => 18.3 Ko
    TGA => 192 Ko
    BMP => 192 Ko

    ==> donc il vaut mieux prendre le format jpg car les fichiers sont 10x moins gros(si t'as pas mal de textures c'est intéressant, non ?)
    Pas au niveau du programme, mais au niveau du dossier ou tu mets tes textures.

    J'ai fait le même test en activant les mipmaps :

    JPG => 51
    TGA => 51

    ==> Ca bouffe des ressources quand même les mipmaps ...

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    mmm perso moi ce que je voit c'est plutot

    BMP 24BPP max
    JPEG 24BPP max + compression qui les rend foireuses
    TGA 32BPP => canal alpha + compression RLE qui ne degeulasse pas l'image...

    donc perso je prefere de loin le TGA

    sinon niveau optimisation fait bien attention a limiter au maximum le nombres d'appels à glBindTexture qui coute beaucoup en terme de ressources memoires, verifie bien qu'aucune chose inutile n'est activée (ca parait tout bete, mais on voit trop souvent des personne qui activent le blending la ou il n'est pas utile...)
    utilise un structure de donée la plus optimisée pour ce que tu veut faire (partage de vertex, vertex array ou display liste pour la geometrie statique...)
    souvent les vertex array sont preferables au display listes car elles permettent une plus grande souplesse d'utilisation (et donc de supprimer des faces cachée par exemples...)

    bref il y a pleins d'optimisations possibles et imaginables.

    d'ailleurs sur le site de Nvidia il y a un document "Avoiding 19 Common OpenGL Pitfalls" qui te donne les bourdes les plus importantes a eviter (en anglais bien entendu )
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    C'est sûr que les TGA sont utiles si tu veux faire des faces transparentes mais sinon ...

    Pour parler des vertex arrays, j'ai essayé et ils me donnent un FPS plus élevé qu'avec une display liste !!!

    Ca dépend plus de la carte graphique les vertex arrays ou pas ???

  8. #8
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    ca depend surtout de ce que tu leurs fait faire... perso je prefere les vertex array de toute facon...

    sinon les TGA on le gros aventage d'avoire une compression sans perte de qualitée, ce qui permet d'avoire de image 24 bits (comme les BMP) avec une taille plus petite...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  9. #9
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    PNG pour la compression 24 bits sans pertes (avec canal alpha).

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  10. #10
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par goutbouyo
    Pour parler des vertex arrays, j'ai essayé et ils me donnent un FPS plus élevé qu'avec une display liste !!!
    Pour les display lists ça dépend vraiment de ce que tu veux faire avec.

    Attention, il ne faut pas les recompiler à chaque frame sinon ça va être très mauvais au niveau perf..

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    Pour parler des vertex arrays, j'ai essayé et ils me donnent un FPS plus élevé qu'avec une display liste !!!
    Désolé je me suis trompé ...

    En fait les vertex me donnent des FPS bcp MOINS élevée qu'une display liste !!!

    Attention, il ne faut pas les recompiler à chaque frame sinon ça va être très mauvais au niveau perf
    Que veux tu dire par là ???
    Ma liste je la crée au début puis en suite je fais glcallList(maliste);

    C'est bon comme ça ???

  12. #12
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Que veux tu dire par là ???
    Ma liste je la crée au début puis en suite je fais glcallList(maliste);

    C'est bon comme ça ???
    oui , c ca

    faut juste pas faire glGenList a chaque frame :o comme le coup de loader la texture a chaque frame , a eviter aussi

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    C'est bon je le fais plus de loader la texture à chaque frame !!!

    Tu sais pas où je peux trouver des infos sur les quadtrees ??? (à ce qu'il parait c'est bien pour des nivaux plats)

  14. #14
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    non j' ai pas de lien a te donner sur le quad tree mais ca se trouve

    si ton niveau est plat , j avais employée une technique de ce style pour un jeu , qui est assez simple a mettre en oeuvre mais il te faut un code de frustum culling ( assez trouvable aussi ..)


    tu divise ton niveau en plusieurs casses de taille ni trop petite ni trop grande ( à toi de tester ) , dans chaque case tu y mets une liste de quad ( avec un std::vector ou un truc du style) que tu remplit suivant la position de ta geometrie ,

    et ensuite pour le rendu , tu fais une iteration sur ta liste de cases et tu teste le frustum avec un cube à la taille de ta case , si il est dans le frustum , tu dessine tout le contenu de la case

    Tu peux te servir de ca pour les collision aussi

    ca te permet de gagner par mal de fps avec un code relativement simple

    Bien sur y a des tas d autres manieres mais si tu cherche un truc pas trop prise de tete ca c est pas mal

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    Ca a l'air pas mal ton idée

    En fait ça se rapproche pas mal de l'octree, non ???

  16. #16
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    completement oui

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Points : 34
    Points
    34
    Par défaut
    un octree c'est un quadtree avec une division en plus dans le sens de la hauteur.

    Sinon, j'ai trouvé une démo avec source en 2 min sur google qui présente bien le concept.

    http://home.planet.nl/~monstrous/ -> DOWNLOAD -> QUADTREE

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup pour cette source !!!
    Je vais la regarder de près ...

  19. #19
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    N'hésite pas aussi à utiliser les mipmapping qui augmente la vitesse d'affichage. et surtout pas d'antialias.

    Octree + mipmapping + vertex array --> rapidité.
    Хајде Јано коло да играмо

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Points : 55
    Points
    55
    Par défaut
    J'ai essayé les mipmaps et ça fait plutôt diminuer ma vitesse d'affichage ...

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. Réponses: 19
    Dernier message: 19/05/2011, 11h13
  3. optimisation animation par fps >60Hz
    Par Archimède dans le forum Débuter
    Réponses: 6
    Dernier message: 20/01/2010, 17h18
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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