manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 décembre 2006
-
5 juin 2006 à 13:05
manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 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...
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 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.
manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 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 !
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 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
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 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 ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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 :)
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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.
manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 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.
manolobis
Messages postés21Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention17 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).