Display list

manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006 - 5 juin 2006 à 13:05
manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006 - 5 juin 2006 à 17:55
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

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
5 juin 2006 à 13:35
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.

++
0
manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006
5 juin 2006 à 15:19
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+
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
5 juin 2006 à 15:26
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

++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 juin 2006 à 15:41
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006
5 juin 2006 à 15:52
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 ?
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 juin 2006 à 16:00
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 :)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 juin 2006 à 16:01
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.
0
manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006
5 juin 2006 à 17:34
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.
0
manolobis Messages postés 21 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 17 décembre 2006
5 juin 2006 à 17:55
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  !
0
Rejoignez-nous