Display list

Signaler
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006
-
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006
-
Bonjour à tous (et toutes),

Voilà, j'ai une question d'ordre général concernant les Display List en OpenGL.

Je suis en train de développer un (petit) moteur 3D, sous DevCPP en OpenGL,
tout va bien concernant les perspectives, camera, lumières, dot3 etc...
Pourtant quand j'arrive aux détections de collisions je me mets à hésiter à utiliser
les Display List dans la mesure où non seulement mes vertex sont mémorisés en
RAM (pour justement le calcul des collisions) mais aussi car je doit faire les calculs
de détection 'à la main', parallèlement à l'affichage de mes Display List.


Donc voilà mes questions, toutes réponses sont les bienvenues:


- Est-ce vraiment un gain de temps d'afficher les objets à l'aide de Display List, si
  en parallèle je doit faire tout les calculs de détections de collisions à partir des positions
  des différents vertex des objets que j'affiche en Display List ? (ça va, c'est clair ?)
- Ou y-a-t'il une autre méthode pour calculer les collisions directement à partir des
  Display List (je ne pense pas puisque les Display List ne renvoient aucune info sur
  la position des vertex après, ni avant, manipulation, rotate, translate, etc...


D'avance merci pour vos réponses...


 

9 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Pour l'affichage openGL, les display list sont une des meilleurs méthodes. Par contre tu n'a aucun acces au données contenus dans les displays list.
Dans ton cas , je pense qu'il faut faire comme ca : une display list par objet et le calcul des collisions à part.

++
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006

Merci Laurent1024 pour ta réponse .

Je vais donc continuer dans cette voie, DL + calcul collisions .

Je pense qu'avec des 'bounding box' assez grands et englobant les objets de mes
Display List je devrais m'en tirer à moindre frais, en tant que temps de réponse !

Je me demande si je suis sur le bon forum , j'ai bien tapé 'forum OpenGL' dans le moteur
de recherche mais je vois essentiellement des message concernant la prog Win32 !


En tout cas merci encore... A+
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
C'est un forum  de programmation C/C++ généraliste donc je pense pas ce que ca pose problème (meme s'il y a beaucoups de win32 et de MFC)
Tiens un lien qui peut t'interresse :http://jeux.developpez.com/faq/3d/?page=intersections

++
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oue les display list ne donnent aucun accès au données, alors que les
vertex buffers fournissent de meilleurs performances tout en permettant
un peu de dynamique. Donc personnellement, parmis toutes les méthodes
pour afficher des poly, je n'utilisent plus que les vbos (donc vertex
array, DL, poubelles).


Pour la collision, c'est ton CPU qui s'en occupe avec les données en
ram. Faut pas espérer récupérer les positions calculer par le GPU.
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006

Encore merci à Laurent pour l'adresse concernant les collisions... Je l'ai mémorisé dans mes favoris et jeté un rapide coup d'oeil, ça à l'air intéressant...


Luthor utilise les Vertex buffers.
Mais quand tu dis Vertex array poubelle..., c'est quoi la différence entre Vertex buffers et Vertex array ?


Les Vertex array ne sont pas ces petites cases mémoires accessibles directement sur la carte vidéo pour une accélération matérielle et stocker les Vertex des objets ?
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Non les vertex array, c'est stocké en RAM. Alors que vertex buffer en
STATIC c'est directement en mémoire video. Ya une grosse différence de
perf entre vertex array et vertex buffer. (enfin grosse, faut
relativiser, c'est pas un rapport de 10). Mais avec les vertex array,
tu dois balancer par le bus toutes les données a chaque frame, alors
qui c'est stocké en mémoire video, c'est deja sur place :)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Mais l'utilisation des vertex array et buffer, se fait pas
l'intermédiaire des memes fonctions. C'est un peu zarb comme truc. Mais
ca fonctionne comme ca.
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006

Bon, mon dernier message à dù se perdre, je disait:


Merci pour les infos, Luthor, ce sont bien les Vertex Buffers qui sont stockés sur la carte vidéo et non pas les Vertex Array, désolé pour la confusion .

Je vais me renseigner du côté des Vertex Buffers, qui
semblent plus convenir à mon appli.Avec l'adresse de
Laurent1024 sur les collisions je devrait pouvoir joindre les deux bouts.

Bien que les collisions je sais déjà les gérer dans mon application. Ce qui posait problème, c'était l'intérêt de l'utilisation des Display List.


Bref, pour une question de cohérence je vais m'orienter vers un duo Vertex Buffers + détection de collision.

Merci... Manolobis.
Messages postés
21
Date d'inscription
dimanche 5 juin 2005
Statut
Membre
Dernière intervention
17 décembre 2006

D'ailleurs en me renseignant sur les Vertex Buffer, j'ai retrouvé un site que j'avais déjà mémorisé dans mes favoris, pour tout ceux que ça intéresse, il explique les différentes étapes et composantes d'un moteur 3D (DirectX ou OpenGL).

http://loulou.developpez.com/tutoriels/moteur3d/

Débutants ou Amateurs, je vous conseille d'y faire un détour  !