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 :

Entre autre : frustum de vue, optimisations...


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Par défaut Entre autre : frustum de vue, optimisations...
    Bonjour, j'ai commencé à faire un jeu 3D sous openGL, et ca rame un peu, j'aimerais donc améliorer un peu les performances. J'utilise déjà
    les displayList et les vertex array.

    Question 1 : Le frustum de vue est toujours le même à l'intérieur des displayLists, alors que dois-je utiliser? des displayLists ou alors du frustum + octree.

    Question 2 : Connaissez vous des algorithmes qui réduisent les détails des triangles éloignés de la caméra?

    Question 3 : Ma skybox prend énormément de ressource, lorsque je ne l'affiche pas, je suis à 400 fps et quand je l'affiche je ne suis qu'à 260, c'est probablement parce que la face que je regarde fait du 40 sur 40, OpenGL doit prendre pas mal de temps pour la calculer et l'afficher, n'y aurait-il pas un moyen de limiter le calcul de cette skybox? (elle est déjà dans une displayList...)

    Question 4 : pourquoi le displayLists ne me font presque pas gagner de fps? je n'en gagne qu'une dizaine et seulement quand j'affiche 100 fois le même objet, mais avant presqu'aucun changement.

    Question 5 : Les vertex arrays compilés ne me font rien gagner du tout, je les crée à l'intérieur des displayLists, est ce à cause de cela.


    Merci pour votre aide, cela me permettra de gagner pas mal de fps je pense.

    Merci.

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Tu utilises quel base de programmation pour la boucle d'affichage ?

    c'est probablement parce que la face que je regarde fait du 40 sur 40
    ??

    Octree peux être une bonne idée, cela dépend du monde affiché.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Par défaut
    Oui du 40 unité sur 40 unité(40.0f, 40.0f), c'est un gros carrée qui se trouve loin...bref c'est une skybox... Je perds 130 fps car le fait d'afficher une skybox oblige Opengl à remplir mon écran de pixel, alors que sans skybox, ce n'est pas le cas...logique.

    Comment faire pour diminuer le temps de calcul de ces pixels qui sont presque tous noirs ou bleus, n'y a t'il pas moyen de dire à opengl de ne pas s'occuper de tel ou tel pixel dont la couleur ne dépasserait pas une certaines limites? ou alors je reviens à une de mes questions peut on dire à opengl de ne calculer que très grossièrement les pixels qui se trouvent loin de nous?

    Qu'entend par base de programmation? j'utilise glut si c'est ca que tu veux savoir...

    Merci

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Je pense que ce n’est pas vraiment un problème de fillrate de la skybox mais de texture qui doit être trop grosse et qui doit prendre du temps à être redimensionnée et à faire un rendu dessus...
    Solution adapter la résolution de la texture suivant la distance de la caméra.

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Connaissez vous des algorithmes qui réduisent les détails des triangles éloignés de la caméra?
    Tu peux le faire simplement avec la distance, avec le même système que les textures... Plus c'est loin moins il y a de triangles dans le model affichés.
    Tu fais plusieurs models de diverses résolutions que tu affiches ou non.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Par défaut
    Lol, ca risque d'être compliqué, je vois mal quelqu'un se tapper pleins de modèles différents sour 3dsmax pour faire le même modèle mais en rajoutant des faces à chaque fois, c'est inconcevable. Et surtout je vois mal l'application, supprimer et recharger de nouveaux modèles quand on s'approche, et idem pour les textures, cela passerait brusquement d'une résolution à une autre, j'ose même pas imaginer ce que ça donnerait et surtout le nombre de fps que tu obtiendrais...

    Et pour la skybox, le principe d'une skybox, est qu'elle suit les mouvements du personnage, donc on s'approche de toute facon jamais de cette skybox...

    Enfin bref, est ce que quelqu'un qui aurait déjà coder des moteurs 3D qui fonctionnent bien, pourrait éclairer ma lanterne sur les questions que j'ai posées, merci?

  7. #7
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut Re: Entre autre : frustum de vue, optimisations...
    Enfin bref, est ce que quelqu'un qui aurait déjà coder des moteurs 3D qui fonctionnent bien, pourrait éclairer ma lanterne sur les questions que j'ai posées, merci?
    On va essayer.

    Citation Envoyé par MaxPayne
    Question 1 : Le frustum de vue est toujours le même à l'intérieur des displayLists, alors que dois-je utiliser? des displayLists ou alors du frustum + octree.

    Question 2 : Connaissez vous des algorithmes qui réduisent les détails des triangles éloignés de la caméra?

    Question 3 : Ma skybox prend énormément de ressource, lorsque je ne l'affiche pas, je suis à 400 fps et quand je l'affiche je ne suis qu'à 260, c'est probablement parce que la face que je regarde fait du 40 sur 40, OpenGL doit prendre pas mal de temps pour la calculer et l'afficher, n'y aurait-il pas un moyen de limiter le calcul de cette skybox? (elle est déjà dans une displayList...)

    Question 4 : pourquoi le displayLists ne me font presque pas gagner de fps? je n'en gagne qu'une dizaine et seulement quand j'affiche 100 fois le même objet, mais avant presqu'aucun changement.

    Question 5 : Les vertex arrays compilés ne me font rien gagner du tout, je les crée à l'intérieur des displayLists, est ce à cause de cela.
    1- Je vois pas très bien le rapport entre les display lists, et le frustum culling et les structures de partitionnement

    2- Oui, ça s'appelle le LOD (Level Of Detail). Ca donne par exemple des Progressive meshes, ou des algos connus (me rappelle jamais le nom) pour l'affichage de terrains. Il y a de la doc à foison sur le net.

    3- Il faut voir ce qui limite ton framerate très exactement. A mon avis, si ta skybox remplit tout l'écran, c'est le fillrate (taux de remplissage des pixels). Il faut diminuer la qualité / taille des textures par exemple.
    Et il ne faut jamais s'alarmer avec les gros framerates : passer de 400 à 260 c'est comme passer de 50 à 47.

    4- Aucune idée. Venant de DirectX, j'utilise toujours les VBO et ça me semble être toujours la meilleure solution.

    5- Pas mieux

  8. #8
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Lol, ca risque d'être compliqué, je vois mal quelqu'un se tapper pleins de modèles différents sour 3dsmax pour faire le même modèle mais en rajoutant des faces à chaque fois, c'est inconcevable. Et surtout je vois mal l'application, supprimer et recharger de nouveaux modèles quand on s'approche, et idem pour les textures, cela passerait brusquement d'une résolution à une autre, j'ose même pas imaginer ce que ça donnerait et surtout le nombre de fps que tu obtiendrais...

    OpenGL le fait déjà pour toi et oui cela fonctionne bien comme cela !!

    Regarde dans le RedBook Chapitre "Multiple Level of Details" ->mipmaps

    Tu peux faire pareil pour les meshs...

    Oui il y a les LOD les RAOM etc... pour les terrains, les LOD des objets 3D, pleins d'algos sont dispo, mais le mieux c'est de pré-calculer le tout, sinon si tu le fait en temps réel cela prend pas mal de ressources CPU pour rien...

    Et tu affiches les différents models suivant la distance, quand ton model fait 10 pixels sur l'écran je t'assure que 5000 polygones cela sert à rien... donc déjà quand c'est trop loin tu peux mettre une forme assez basic qui le remplace pour pas avoir de 'saut' quand le model arrive sur l'écran !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Par défaut
    Merci LouLou, je vais regarder les lod pour les modèles 3D, pour la skybox, quand je l'affiche sans textures c'est pareil, je ne gagne que 10 fps. Je pense donc que c'est normal...

    Autant pour moi Ti-R, j'avais pas compris la solution que tu proposais.

    Pour les lod de textures je l'utilise déjà, avec gluBuild2DMipmaps.

    Sinon, je comprends pas ce que tu veux dire par précalculer le tout, personne n'aurait un bon tuto simple à comprendre ou un exemple d'implémentations pour que je comprenne le mécanisme de lod des objets 3D, car c'est vrai que c'est stupide d'afficher tout les plygones quand l'objet est loin, il faut absolument que je mette cela en oeuvre...

    Merci pour vos réponses

Discussions similaires

  1. Cacher la scrollbar d'un DBCtrlGrid (entre autres)
    Par LadyWasky dans le forum Delphi
    Réponses: 4
    Dernier message: 29/11/2006, 15h19
  2. Réponses: 18
    Dernier message: 04/04/2006, 14h31
  3. [Debutant][Poseidon] creer un constructeur, entre autre
    Par TabrisLeFol dans le forum Autres
    Réponses: 4
    Dernier message: 06/03/2006, 20h46
  4. Réorganisation d'index entre autres ...
    Par Doctor Z dans le forum Administration
    Réponses: 9
    Dernier message: 08/11/2004, 15h02
  5. [][VB/Powerpoint] : nombre de diapo entre autre
    Par stan28 dans le forum Contribuez
    Réponses: 11
    Dernier message: 29/04/2003, 18h43

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