- begin
- glGetIntegerv(GL_VIEWPORT, @viewport); //Die Sicht speichern
- glSelectBuffer(256, @Puffer); //Den Puffer zuordnen
- glRenderMode(GL_SELECT); //In den Selectionsmodus schalten
- glmatrixmode(gl_projection); //In den Projektionsmodus
- glPushMatrix; //Um unsere Matrix zu sichern
- glLoadIdentity; //Und dieselbige wieder zurückzusetzen
- gluPickMatrix(basex, viewport[3]-basey, 1.0, 1.0, viewport);
- gluPerspective(45.0, glform.panel1.Width/glform.panel1.Height, 1, 100);
- GLOutput; //Die Szene zeichnen
- glmatrixmode(gl_projection); //Wieder in den Projektionsmodus
- glPopMatrix; //um unsere alte Matrix wiederherzustellen
- treffer := glRenderMode(GL_RENDER); //Anzahl der Treffer auslesen
- Getroffen := High(GLUInt); //Höchsten möglichen Wert annehmen
- Z_Wert := High(GLUInt); //Höchsten Z - Wert
- for i := 0 to Treffer-1 do
- if Puffer[(i*4)+1] < Z_Wert then
- begin
- getroffen := Puffer[(i*4)+3];
- Z_Wert := Puffer[(i*4)+1];
- end;
- Result := getroffen;
- end;