[C] OpenGl et clicks

OpenGl et clicks [C] - Delphi/Pascal - Programmation

Marsh Posté le 16-04-2004 à 01:17:53    

Salut,
Jai un probleme pour la gestion des clicks en opengl.. en fait, jarive bien a detecter si un object a ete clické (a laide de projections) mais le probleme que jai maintenant est que plus lobject est eloigné (translation suivant z) plus sa zone de click est décalée...et je n'arive pas a résoudre ce probleme. Donc voila, si quelqu'un à une idée ce serai cool qu'il la poste
merci

Reply

Marsh Posté le 16-04-2004 à 01:17:53   

Reply

Marsh Posté le 16-04-2004 à 08:02:55    

Ykizar a écrit :

Salut,
Jai un probleme pour la gestion des clicks en opengl.. en fait, jarive bien a detecter si un object a ete clické (a laide de projections) mais le probleme que jai maintenant est que plus lobject est eloigné (translation suivant z) plus sa zone de click est décalée...et je n'arive pas a résoudre ce probleme. Donc voila, si quelqu'un à une idée ce serai cool qu'il la poste
merci  


Ta détection des clicks est buggée... [:skeye]  
http://www.google.com/search?q=ope [...] 8&oe=utf-8

Reply

Marsh Posté le 17-04-2004 à 05:09:08    

Salut,
Jai fais le tour des sites (avant que tu me donne le lien :/) et ma fonction ne me parait pas buggée..maintenant pê qu'il y a vraiment un bug et que je ne le vois pas...Je poste donc ma fonction qui est en delphi (crée grace qux tutoriaux de Game Tutorials)..voila merci
 

Code :
  1. function selection (x,y : integer):integer;
  2. var
  3. trouve,i,choisi: integer;
  4. viewport: array [0..3] of integer;
  5. Buffer : array [0..511] of Gluint;
  6. Depth : Gluint;
  7. begin
  8. glSelectBuffer(512, @Buffer);
  9. glGetIntegerv(GL_VIEWPORT, @viewport);
  10. glMatrixMode(GL_PROJECTION);
  11. glPushMatrix();
  12.   glRenderMode(GL_SELECT);
  13.   glLoadIdentity();
  14.   gluPickMatrix(x, viewport[3] - y, 2, 2, @viewport);
  15.   gluPerspective(45.0,SCREEN_WIDTH /SCREEN_HEIGHT,0.1,150.0);
  16.   glMatrixMode(GL_MODELVIEW);
  17.   DrawGlScene;
  18.   trouve := glRenderMode(GL_RENDER);
  19.   glMatrixMode(Gl_PROJECTION);
  20. glPopMatrix();
  21. glMatrixMode(GL_MODELVIEW);
  22. if (trouve > 0) then
  23. begin   
  24.     Depth := Buffer[1];
  25.     choisi := Buffer[3];
  26.     for i:=1 to trouve-1 do
  27.       begin
  28.         if(Buffer[(i * 4) + 1] < Depth) then
  29.           begin
  30.             Depth := Buffer[(i * 4) + 1];
  31.             choisi := Buffer[(i * 4) + 3];
  32.           end;
  33.       end;
  34.     result:=choisi;
  35.   end
  36.     else
  37.   result:=0;
  38. end;


Message édité par Ykizar le 17-04-2004 à 05:10:29
Reply

Marsh Posté le 17-04-2004 à 18:13:15    

up pls :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed