Bonjour,
J'aimerai bien savoir la primitive d'opengl-Glut où une astuce pour avoir récuper un objet de la scéne afin de le supprimer.
J'ai chercher dans l'API de openGL et Glut et j'ai pas trouvé
merci en avance
Bonjour,
J'aimerai bien savoir la primitive d'opengl-Glut où une astuce pour avoir récuper un objet de la scéne afin de le supprimer.
J'ai chercher dans l'API de openGL et Glut et j'ai pas trouvé
merci en avance
Ta question ne me semble pas tres claire. A priori, OpenGL ne gere pas des objets, il gere des fonctions de dessins .
Je pense que j'ai pas bien expliquer ma question :
en faite, j'ai un dessin qui contient plusieurs objets et je cherche une primitive d'OpenGL où de GLUT qui permis d'identifié l'objet qui intersecte avec un rectangle que je defini moi-même ces coordonnés. et après supprimer cet objet qui se trouve dans cette zone de la fenêtre.
Alors c est niet. Sous OpenGL tu manipules des fonctions de dessin, pas des objets.
Quand tu affiches un polygone (soit par glBegin() / glEnd() ou par des primitives GLUT) tu indiques juste au GPU, que tu veux qu'il dessine ceci ou cela. D'ailleurs tu le reprecises a chaque nouveau rendu de l image ... ce qui montre que l information de structure de scene n'a pas d'existe du point de vue OpenGL.
Si tu veux faire de l intersection d objet puis de la destruction, il va falloir toi meme coder tes primitives d intersection (ou utiliser la lib qui va bien) et toi meme definir la notion de objet. Par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class triangle { float3 a,b,c; }; class Object3D { virtual sphere getBoundingSphere() const = 0; virtual void getTriangles(triangle * , int * count) const = 0; virtual void draw() const = 0; };
Merci beaucoup Smashy pour ta réponse.
en faite, je suis obligé d'utilisé la lib openGl-Glut. et je suis entrain de coder en langage C, Ceci dit, tu as pas des exemples de code en C concernant l'intersection et la destruction.
non, desole, je n ai pas de code sous la main. Mais cela ne semble a premiere vue pas tres complique. Il faut que tes objets soient capables d'evaluer un volume les englobant, et de tester la collision de ce volume avec ton rectangle. Ensuite un delete C++ fait un peu pres l affaire.
ou un truc approchant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 vector<Object3D *> objects; vector<Object3D *>::iterator it = objects.begin(); while (it != objects.end()){ Object3D * o = *it; if (collision(o->getBoundingSphere() , myrectangle)){ delete o; it = objects.erase(it) } else { ++it; } }
Partager