gluUnProject(X,Viewport[3]- Y -1,pz,ModelView,Projection,Viewport,@pX,@pY,@pZ);
Ich hoffe mal das es jetzt klar wird. Ein wenig Eigenitiative sollte schon sein. Und ich hab doch oben gesagt das der Ursprung des 2D-Koordinatensystems bei OpenGL unten/link liegt, was du bei gluUnProject eigenartigerweise auch korrekt gemacht hast. (Oder hast du da einfach C&P gemacht?)
gluUnProject(X,Viewport[3]- Y -1,pz,ModelView,Projection,Viewport,@pX,@pY,@pZ);
Ich hoffe mal das es jetzt klar wird. Ein wenig Eigenitiative sollte schon sein. Und ich hab doch oben gesagt das der Ursprung des 2D-Koordinatensystems bei OpenGL unten/link liegt, was du bei gluUnProject eigenartigerweise auch korrekt gemacht hast. (Oder hast du da einfach C&P gemacht?)
Natürlich habe ich erst C&P gemacht! Erstmal soll das Funktionieren das umrechnen der Koordinaten. Danach lerne ich den Abschnitt und schreibe ihn neu so mache ich das immer am anfang Also du meinst das ich bei glReadPixels bei y das angeben muss: "Viewport[3] - Y - 1"? Wenn ja, dass funktioniert auch nicht.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Dann hast du halt sonstwo noch nen Fehler, denn das was ich eben angesprochen habe muss schon so sein. Am besten lässt du dir irgendwo mal die Koordinaten ausgeben die dir gluUnproject zurückgibt ausgeben, denn dan siehst du ob dort der Fehler liegt. Ansonsten rate ich dir nochmal dich zum Thema Unterschied Modelansichts- Projektionsmatrix schlau zu machen, denn letztere ist auch sehr wichtig, da gluUnprojekt diese benötigt.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Mauskoordinaten hast du doch in 2D. Und das 2D-Koordinatensystem hat in Windows seinen Ursprung oben/links, unter OpenGL unten/links. Das hat aber nix mit deiner 3D-Szene zu tun.
Achso! Oh man ich habe erlich gesagt kein Bock mehr!! Nur wegen so ein scheiß Maus-Koordinaten so ein aufwand. Dafür müßte es mal ein Tutorial geben. Ist das normal? Bei so ein scheiß bleibt man hängen. Gibt es nirgendswo ein beispiel was man sich downloaden kann oder so?
Ich habe mal die Werte ausgelesen, die ich zurück bekomme. Bei X bekomme ich immer den Wert: -20,0141326620814 bei Y: 10,0038314387364 und bei Z: 69,9942780248352. Fast immer das gleiche. Nur hinter dem , ändert sich immer etwas wenn ich woanders hinklicke. Ich weis ja nicht ob das was weiter hilft?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Welchen Datentyp haben denn pX,pY und pZ? Kanns sein das du da nur einfache Präzision verwendest? Da muss nämlichen auf jedenfall Double genommen werden, da gluUnproject drei Double-Werte als Ergebnis liefert, und wenn du da einfach nur drei Singles übergibst, dann wird das nicht funktionieren.
Ja, die haben Double. Bzw. TGLDouble. Ich habe mal Float genommen. Da funktioniert es schon besser aber immer noch nicht so ganz. aber das ist glaube einstellbar.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Son of Satan hat geschrieben:
Mauskoordinaten hast du doch in 2D. Und das 2D-Koordinatensystem hat in Windows seinen Ursprung oben/links, unter OpenGL unten/links. Das hat aber nix mit deiner 3D-Szene zu tun.
Jetzt hab ich mal ne Frage:
In OpenGL ist der Koordinaten Ursprung für 2D unten Links? Im Orthomodus is er doch oben links! @SoS: Kannste da mal kurz eine globale, klärende Zusammenfassung geben!?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Im Orthomodus ist der Ursprung dort wo du ihn haben willst, da du bei glOrtho ja doch alle Parameter angibst. Aber wenn du z.B. Pixel ausliest, dann ist Pixel 0/0 unten links und nicht wie bei Windows oben links.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.