Coucou a tous !

Mon but du moment :

je dispose d'une application trés simple . Un fond noir , et une image ( quad/texturé ) fixe . ( le tout en 3D , pas d'intéret pr le moment mais ca viendra )

Je veut parvenir a trouver les coordonée ( x,y ) de la souris par rapport aux coord de mon image :

ex : si ma souris est en haut a gauche SUR l'image, je veux du ( 0, 0 ) .

Je dipose des coord écran de ma souris ( x , y ) .

J'ai lu que le pikcing était la méthode adapté .
J'ai implémenté un picking en mode select ; mais je ne vois pas ce que je peut en tirer a y réfléchir ...

Je me tourne donc vers le mode "feedback" .
J'ai fait tourner quelquechose ; mais je ne parvient pas a interprété les résultat obtenue . Il y également surement pas mal d'erreurs dans mon codes , si vous en voyez faites moi signes .merci

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
void cStereoPair::Picking() 
{
	// on entre en mode "select"
	GLfloat buffer[512] ;
	glFeedbackBuffer(512,GL_3D, buffer) ;
	(void) glRenderMode(GL_FEEDBACK) ;
 
	// on sélectionne l'endroit que l'on veut observer
	glMatrixMode (GL_PROJECTION);
    glPushMatrix ();
    glLoadIdentity ();
	GLint viewport[4]; 
	glGetIntegerv(GL_VIEWPORT, viewport); 
	int xmouse = cInputManager::GetInstance().mouseX ;
    int ymouse = cInputManager::GetInstance().mouseY ;
	gluPickMatrix( xmouse , viewport[3]-ymouse , 5 , 5 , viewport ); 
    gluPerspective(45,(1024/768),0.1,100);
	glMatrixMode(GL_MODELVIEW);
 
	// on initialise la pile des nom
	glInitNames();
	glPushName(0);
 
 
	// on redessine la scene 
	glLoadName(10) ;
	glDisable( GL_DEPTH_TEST ); 
        glBegin(GL_QUADS);
	    glColor4f(1,1,1,1) ;
 
	          glVertex2f(  -3 , -3.5 );
	          glVertex2f(  -3 , 3.5 ); 
	          glVertex2f( 4 , 3.5 ); 
	          glVertex2f( 4 , -3.5 );   
 
        glEnd();  
		glDisable(GL_TEXTURE_2D);  
        glDisable(GL_BLEND);  
 
	// on restore la matrice de projection
	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(GL_MODELVIEW);
	glFlush();
 
	// on retourne en mode "render"
    glMatrixMode (GL_PROJECTION);
    glPopMatrix ();
	int size = glRenderMode(GL_RENDER) ;
 
		// analyse des données
	std::cout << std::endl << std::endl << std::endl ;
	for ( int i = 0 ; i < size ; i ++ )
	{
		if ( buffer[i] == GL_POINT_TOKEN ) std::cout << "GL_POINT_TOKEN " << std::endl ;
		if ( buffer[i] == GL_LINE_TOKEN ) std::cout << "GL_LINE_TOKEN " << std::endl ;
    	if ( buffer[i] == GL_POLYGON_TOKEN )
		{
			std::cout << "GL_POLYGON_TOKEN " << std::endl ;
		    for ( int j = 0 ; j < 11 ; j ++)
				std::cout << buffer[j] << std::endl ;
		}
		if ( buffer[i] == GL_BITMAP_TOKEN) std::cout << " GL_BITMAP_TOKEN " << std::endl ;
		if ( buffer[i] == GL_DRAW_PIXEL_TOKEN) std::cout << "GL_DRAW_PIXEL_TOKEN" << std::endl ;
	}
edit : je pense que l'un des pb est que je ne sais pas sur combien d'indice "boucler" avec mon "for" , lorsque j'ai un token polygon . J'ai mis 11 car ca semble a peu prés ca ... mais j'ai des gros doute . Et je n'arrive tjrs pas a interprété les nbre qui me sont présenté . ( a part le premier qui correspond a l'id du token lol )