|
Dernière réponse | |
---|---|
Sujet : [OpenGL]qq questions | |
farib | ca y est c fait, ca marche.... c propre :D |
Aperçu |
---|
Vue Rapide de la discussion |
---|
farib | ca y est c fait, ca marche.... c propre :D |
bjone | le mieux:
maintenir la géométrie de l'objet une seule fois, et avoir 'n' entitées qui utilisent la même géométrie via un pointeur/indice, et l'entitée maintient la position / direction et autres attributs. (donc ton cas la géométrie == ta liste) pour n cube, tu utilises à chaque fois la même liste... |
farib | eupe |
farib | actuellemetn pour mon tetris, jai une fonction "cube" qui me dessine un cube a l'endroit voulu, le recréant a chaque fois avec les parametres x, y, z dans mon vertex....
faut-il que je prenne le bon réflexe en open gl de créer un cube en liste, et que ma procédure "cube" au lieu de créer un cube nouveau, appelle la liste puis le place avec glRotate et glTranslate ? |
red faction |
|
farib | donc on peut quand même considérer des objets, que l'on place....
quel est le fonctionnement de la pile ? |
bjone | oui, mais pense à faire un "push"/"pop" de ta pile de matrice, sinon tu translate/rotate de chaque cube se fera par rapport au "repère" du dernier cube.... |
farib |
|
LeGreg |
|
LeGreg |
|
farib | autre question : si j'ai,par exemple plusieurs cubes identiques a afficher
dois-je, ou puis-je, est-ce une bonne idée de faire une liste, d'appeler le cube puis de le placer avec glTranslate et glRotate pour chaque cube ? on crée tous les cubes a partir de la liste et on les place a chaque fois .... |
farib | en fait, le glRotate sert plsu a modifier les "objets" que l'on rentre apres l'appel, mais plus pour "calculer la position en 3d" que pour l'affichae en tant que tel ???
" c'est une routine de 3d, pas d'affichage ?????" dans le sens ou je crée la route, je crée la voiture, je place ma voiture, je place la caméra, puis je render le tout |
LeGreg | la liste est plus qu'une macro
bien qu'elle permet de memoriser une suite d'appel OpenGl en un seul. Correctement compilée (ca depend du driver) permet d'obtenir de meilleures performances pour les appels suivants a la liste. L'inconvenient des listes c'est qu'elles sont parametrables de facon limitées et qu'elles ne fonctionnent que pour des objets statiques. Pour positionner ton objet de maniere differente a chaque fois, applique une transformation differente a ta scene avant chaque tracé de cube. Un glRotate multiplie la matrice courante (transformation world->eye ou projection suivant le mode spécifié) par une matrice de rotation d'angle et d'axes spécifiés en arguments. Cela aura donc un effet sur toute géometrie tracée apres l'appel. Pour ne l'appliquer qu'a un seul objet, il faut memoriser la matrice courante par un push avant le glRotate et la restaurer apres le tracé de l'objet par un pop par exemple. OpenGL n'est pas du tout objet dans sa conception. Il s'agit d'une machine a état (un peu comme la tortue en LOGO pour ceux qui connaissent). Ceci dit, de tres nombreux logiciels utilisant OpenGL encapsulent l'interface dans des objets qu'ils définissent eux-memes. LeGreg |
farib | j'ai lu les tutoriels de www.glinfrench.fr.st, qui sotn tres bien fait, mais quelques points m'échappent...
|