Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Also ich hab mir mal so ne kleine Fläche erstellt und wenn ich mit der Maus da drüber fahre soll diese Fläche blau werden. Allerdings wird die Fläche zu Früh blau(wenn ich die Maus von Unten her nach oben fahre) oder zu spät(von oben so ab der Mitte der Fläche) gibts da irgendwie was Grundlegendes was da falsch sein könnte oder is da der Quelltext für notwendig um da überhaupt was zu sagen zu können??
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn dein Objekt zu früh gewählt wird, dann hast du entweder die falschen Koordianten für die Selektion benutzt, oder du hast den Radius für die Selektion zu groß gewählt.Beides übergibst du ja folgendermaßen : <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPickMatrix(mx, viewport[<span class='integer'>3</span>]-my, <span class='integer'>1.0</span>, <span class='integer'>1.0</span>, viewport);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> Ich geh mal davon aus, das du genau in dieser Funktion irgendwo was falsches angibts.Falls das immer noch nix bringt, kannste dir ja mal mein Tut (auf meiner HP) zum Thema Selektion anschauen.
Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Jo ich werd mir mal dann dein Tut ansehen, denn ich hab die schon verschiedenes ausprobiert mit den ganzen Werten, aber ich konnt das nur so machen das ich dann aus einer Blickrichtung die Objekte richtig auswählen konnte.
Das funktioniert aber es kann doch eigentlich nicht richtig sein, dass ich hier erst noch irgendwas von den Mauskoordinaten abziehen muss damit das geht. Das muss doch eigenlich so funktionieren....
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das du von den Koordinaten noch ne Konstante subtrahieren musst dürfte natürlich nicht sein.Aber eventuell nutzt du ja die falschen Mauskoordinaten. Wie sieht denn dein Fenster aus?Gibts dort noch ein Menü oder ein Panel das oben bzw. unten sitzt?Und wo genau nimmst du dir deine Mauskoordinaten her?
Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Also ich beschreibs mal eben schnell: Ich habe 2 Fenster. Auf dem 1. sind Buttons und son kram für irgendwelche veränderungen, berechnungen, etc. fürs 2. Fenster. Auf dem 2. Fenster ist nix drauf. Da wird direkt auf der Form mein OpenGL Scene gerendert. Mauskoordinaten les ich beim MouseMove Event von der Form2 ein und speicher die Koordinaten in mx bzw. my. Is kein Panel, Menü oder sowas in der Art mit drauf.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Eigentlich sollte das ohne Probleme gehen, wenn du auf deiner OpenGL-Form wirklich keine anderen Komponenten wie Panels oder Menüs hast.Eventuell machst du irgendwo nen Fehler beim Setzen deines Viewports. Um deine Selektion zu debuggen, solltest du einfach mal das Wechseln in den Selektionsmodus ausklammern und dann nach dem SwapBuffers ein längeres Sleep einbauen (1000ms oder mehr), dann siehst du nämlich wohin deine Selektion hingezielt hat.Vielleicht bringt dich das bei der Problemsuche etwas weiter. Ansonsten kannste ja mal den Code aus meinem Selektionstut nutzen und es damit probieren.
Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Ich versteh jetzt nur noch nicht ganz woran ich erkennen kann wo meine Selektion hinzielt/gezielt hat. Was passiert denn wenn ich das gemacht habe, bzw. was sollte ich sehen können??
Ich werds dann weiter morgen probieren, is jetzt wohl zu spät...ka
Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Also ich hab jetzt mal ein wenig rumprobiert und ich glaub der Fehler liegt beim Einlesen der Y-Koordinate auf meinem Formular. Die ist wohl um 28 Einheiten verschoben, weil wenn ich in meinem Selection Code das gluPickMatrix so schreibe: <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPickMatrix(mx,viewport[<span class='integer'>3</span>]-my, <span class='integer'>2.0</span>, <span class='integer'>2.0</span>, viewport)</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> und beim Einlesen der Koordinaten im OnMouseMove-Event auf die y-Werte noch 28 zuaddiere wird das Objekt richtig ausgewählt.
Könnte das an der Titelleiste liegen, dass die y-Werte anscheinend nicht richtig sind??
Registriert: Sa Okt 26, 2002 17:14 Beiträge: 188 Wohnort: Hannover/Lüneburg
Eigentlich sollten die X und Y Koordinaten sich auf den Clientbereich des Fensters beziehen (wenn du sie etwa durch OnMouseDown erhälst). Setzt du aber denn auch den Viewport auf den Clientbereich? Oder nimmst du da einfach Form.Width und Form.Height statt ClientWidth und ClientHeight? Entsprechend musst du da natürlich auch die obere und die linke Kante setzen.
_________________ Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.