ich habe gerade das Objektselektion-Tutorial A durchgearbeitet, nur leider funktioniert mein Programm noch nicht richtig.
Ich habe 3 Quadrate in verschiedenen Farben gezeichnet, durch debuggen habe ich jetzt aber raus gefunden, dass immer alle 3 Quadrate getroffen werden, egal, ob ich auf eines der Quadrate klicke oder irgendwo auf den Hintergrund. Von der Selection-Funktion wird dadurch immer das Quadrat zurück gegeben, welches am nähsten an Kamera ist oder, wenn wenn alle denselben Z-Wert haben, das, was als erste gezeichnet wird. Woran könnte das liegen?
Hier noch mein Code:
Konstanten:
Code:
const
NearClipping =1;
FarClipping =1000;
rot =1;
gruen =2;
blau =3;
namen :array[-1..3]ofstring=('nichts','','rot','grün','blau');
Rendern:
Code:
procedure TForm1.Render;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
In deiner Renderfunktion überschreibst du ja die Pickingmatrix, daher geht dann die Selektion logischerweise nichtmehr. Hier musst du im Rendervorgang prüfen ob du im Selektionsmodus bist, und dann die Matrix nicht überschreiben.
Kopf Tisch Klar, das ist einleuchtend, wenn man das so hört, dass ich da nicht selbst drauf gekommen bin Dankeschön!
Falls jemand dasselbe Problem hat, ich hab das jetzt mit einem default-Parameter gemacht, der auf true gesetzt wird, falls die Render-Methode aus der Selection-Methode aufgerufen wird:
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.