Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2815 connectés 

  FORUM HardWare.fr
  Programmation

  [OpenGL]qq questions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OpenGL]qq questions

n°201297
farib
Posté le 24-08-2002 à 18:12:27  profilanswer
 

j'ai lu les tutoriels de www.glinfrench.fr.st, qui sotn tres bien fait, mais quelques points m'échappent...
 

Citation :


void CreateList()  
{
 
cube=glGenLists(1);  
 
glGenLists s'utilise de manière très intuitive : on veut créer une liste et que celle-ci s'appelle "cube" (il faut déclarer une variable cube unsigned).
 
glNewList(cube, GL_COMPILE);  
 
glNewList indique que tout ce qui suit fera partit de la liste "cube", GL_COMPILE signifiant que la liste est compilée.
 
glBegin (GL_QUADS);  
 
glTexCoord2i(1,0);glVertex3i (-1,-1,1);  
code du cube
glTexCoord2i(0,0);glVertex3i (1,1,-1);  
 
glEnd();  
 
On place le code de notre cube habituel dans la liste.
 
glEndList();  


 
 
quel est "l'intéret" de la liste si ce n'est de faire une "macro" ?
 
peut on créer des listes prenant des parametres variables x, y, et lors de l'appel de la liste, l'objet affiché sera nouveau et différent ? ( dans la def de mon cube, on prend des parametres variables)
 
de plus, quand on fait dans notre fonction de dessin
 
glRotated (45,1,0,0);  
 
on fait tourner quoi exactement ? tout ? seulement le dernier objet dessiné ?
 
j'ai peur de mal comprendre l'openGL dans son approche, car je vois aps trop d' "objets"

mood
Publicité
Posté le 24-08-2002 à 18:12:27  profilanswer
 

n°201449
LeGreg
Posté le 25-08-2002 à 01:32:27  profilanswer
 

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

n°201464
farib
Posté le 25-08-2002 à 01:50:28  profilanswer
 

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

n°201515
farib
Posté le 25-08-2002 à 10:29:26  profilanswer
 

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 ....

n°201579
LeGreg
Posté le 25-08-2002 à 17:15:59  profilanswer
 

farib a écrit a écrit :

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




 
J'comprends rien, c'est normal??
 
LeGreg

n°201580
LeGreg
Posté le 25-08-2002 à 17:17:03  profilanswer
 

farib a écrit a écrit :

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 ....




 
Ben c'est ce que j'ai dit dans le message precedent:

Citation :

Pour positionner ton objet de maniere differente a chaque fois, applique une transformation differente a ta scene avant chaque tracé de cube.


 
A+
LeGreg

n°201644
farib
Posté le 25-08-2002 à 20:22:07  profilanswer
 

legreg a écrit a écrit :

 
 
J'comprends rien, c'est normal??
 
LeGreg




 
 
je fais une liste voiture
 
je fais une liste route
 
 
je fais un gltranslate et un glrotate qui positionneuront mon décor
j'appelle le liste route...
je refais un gltranslate et un glrotate pour positionner la voiture dans le décor
j'appelle la liste voiture....
 
est-ce un bon mode de pensée ?
 
 
de meme , si je veux placer 3 cubes rouges dnas une même scene...
 
puisje faire
 
creation  liste cube rouge
 
gltranslate,glrotate//poition 1er cube rouge
appel liste cube rouge
 
gltranslate,glrotate//poition 2e cube rouge
appel liste cube rouge
 
gltranslate,glrotate//poition 3e cube rouge
appel liste cube rouge
 
est-ce également un bon mode de pensée ?


Message édité par farib le 25-08-2002 à 20:24:36
n°201723
bjone
Insert booze to continue
Posté le 26-08-2002 à 03:22:31  profilanswer
 

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....

n°201775
farib
Posté le 26-08-2002 à 09:44:52  profilanswer
 

donc on peut quand même considérer des objets, que l'on place....
 
 
quel est le fonctionnement de la pile ?


Message édité par farib le 26-08-2002 à 09:45:14
n°201830
red factio​n
Posté le 26-08-2002 à 10:55:28  profilanswer
 

farib a écrit a écrit :

donc on peut quand même considérer des objets, que l'on place....
 
 
quel est le fonctionnement de la pile ?




 
ds une pile seul le dernier element quon vient de placer est accessible  (un peu comme une pile dassiettes, si tu veux acceder a celle qui est en bas c pas possible fo dabord enlever les autres)  
ex :
 tu place 4 ds la pile -> 4
tu place 8 -> 48
tu place 2 -> 482
si maintenat tu veux acceder au 1er element(4) y faut dabord enlever les autres...
 
en opengl c la meme chose sauf que c des matrices : empiler se traduit par glPushMatrix() et depiler par glPopMatrix()
 
un ex :  
 
dessinercube1
 
glPushMatrix()
glRotated()
dessinercube2
dessinercube3
glPopMatrix()
 
dessinercube4
 
ici seul cube2 et cube 3 subiront la rotation

mood
Publicité
Posté le 26-08-2002 à 10:55:28  profilanswer
 

n°201899
farib
Posté le 26-08-2002 à 12:46:51  profilanswer
 

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 ?

n°202257
farib
Posté le 26-08-2002 à 17:56:13  profilanswer
 

eupe

n°202347
bjone
Insert booze to continue
Posté le 26-08-2002 à 19:34:43  profilanswer
 

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...
 

n°202371
farib
Posté le 26-08-2002 à 20:24:42  profilanswer
 

ca y est c fait, ca marche.... c propre :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [OpenGL]qq questions

 

Sujets relatifs
questions de newbies du graphismequelques questions...
[monSite] 2, 3 petites questions avant de partir ds mon délireptites questions
Eviter les questions à la con[C++ sous unix] Moults questions diverses et intéressantes !!!
Integrer de l'OpenGL dans les MFC[HTML] Le topic des questions c...
[opengl] vertex array vs. calllist donnez votre avisquestions aux grosses bêtes en DirectDraw, Direct3D ou Opengl !!!!
Plus de sujets relatifs à : [OpenGL]qq questions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR