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.
Re: Entre autre : frustum de vue, optimisations...
Citation:
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 :koi:
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 :D