Salutations =)
J'essaie actuellement de créer un modeleur. Je dois donc pouvoir déplacer des objets dans la scène. Pour cela, j'ai tenté d'appliquer la méthode du picking...
... Et ça fait maintenant plusieurs heures que la variable hits fait sa tête de mule.
Je m'explique : mon GLint hits reste à la valeur -1, alors que j'ai utilisé plein de glPushName() et glPopName() dans ma fonction Draw(GL_SELECT).
Comme vous le constaterez dans le code ci-dessous, j'ai fini par tester avec deux glLoadName() directement avant de vérifier le contenu de la variable hits. Rien à faire, ça reste constamment à -1.
J'utilise le langage C++ et glut dans l'environnement graphique wxDevCpp.
Si quelqu'un pouvait déceler ou m'aider à comprendre l'erreur (qui est par ailleurs certainement idiote vu mon faible niveau en programmation
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 void MyGLCanvas::Selection(long X, long Y) { glRenderMode(GL_SELECT) ; GLuint selectBuf[SELECT_BUFFER] ; GLint viewport[4] ; GLint hits ; glGetIntegerv(GL_VIEWPORT, viewport) ; glSelectBuffer(SELECT_BUFFER, selectBuf); glInitNames() ; glPushName(0) ; glMatrixMode(GL_PROJECTION) ; glPushMatrix(); glLoadIdentity() ; gluPickMatrix((GLdouble) X, (GLdouble) (viewport[3] - Y), 10.0, 10.0, viewport) ; glMatrixMode(GL_MODELVIEW) ; glLoadName(1) ; glutWireSphere(0.05, 10, 10) ; glLoadName(2) ; glBegin(GL_LINES) ; glColor3f(1, .5, .5) ; glVertex3f(-0.2, -0.2, 0) ; glVertex3f( 0.8, -0.2, 0) ; glEnd(); // Draw(GL_SELECT) ; glMatrixMode(GL_PROJECTION) ; glPopMatrix() ; glMatrixMode(GL_MODELVIEW) ; glFlush() ; hits = glRenderMode(GL_RENDER) ; wxMessageBox(wxString::Format("%i", hits)) ; // Affichage de la valeur de la variable hits }), je lui en serais extrêmement reconnaissant ^.^
Partager