Ykizar | 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 :
- function selection (x,y : integer):integer;
- var
- trouve,i,choisi: integer;
- viewport: array [0..3] of integer;
- Buffer : array [0..511] of Gluint;
- Depth : Gluint;
- begin
- glSelectBuffer(512, @Buffer);
- glGetIntegerv(GL_VIEWPORT, @viewport);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glRenderMode(GL_SELECT);
- glLoadIdentity();
- gluPickMatrix(x, viewport[3] - y, 2, 2, @viewport);
- gluPerspective(45.0,SCREEN_WIDTH /SCREEN_HEIGHT,0.1,150.0);
- glMatrixMode(GL_MODELVIEW);
- DrawGlScene;
- trouve := glRenderMode(GL_RENDER);
- glMatrixMode(Gl_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- if (trouve > 0) then
- begin
- Depth := Buffer[1];
- choisi := Buffer[3];
- for i:=1 to trouve-1 do
- begin
- if(Buffer[(i * 4) + 1] < Depth) then
- begin
- Depth := Buffer[(i * 4) + 1];
- choisi := Buffer[(i * 4) + 3];
- end;
- end;
- result:=choisi;
- end
- else
- result:=0;
- end;
|
Message édité par Ykizar le 17-04-2004 à 05:10:29
|