Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 27, 2025 05:14

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 49 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Aug 22, 2004 23:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
So, Poste ich auch nochmal.
Ich habe es jetzt mit der Funktion von sulaco versucht.
Code:
  1. function GetOpenGLPos(X, Y: Integer): TVector3d;
  2. var
  3.     viewport:   OpenGl12.TVector4i;
  4.     modelview:  OpenGl12.TMatrix4d;
  5.     projection: OpenGl12.TMatrix4d;
  6.     winZ,winY:  Single;
  7. begin
  8.     glGetDoublev(GL_MODELVIEW_MATRIX, @modelview );                          // Get the Current Modelview matrix
  9.     glGetDoublev(GL_PROJECTION_MATRIX, @projection );                        // Get the Current Projection Matrix
  10.     glGetIntegerv(GL_VIEWPORT, @viewport );                                  // Get the Current Viewport
  11.  
  12.   winY := viewport[3] - y;                                                 //Change from Win32 to OpenGL coordinate system
  13.  
  14.     glReadPixels(X, Round(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @winZ );//Read the Depth value at the current X and Y position
  15.     gluUnProject(X, winY, winZ,
  16.               modelview, projection, viewport,                             // Get the vector for the current mouse position
  17.                     @Result[0], @Result[1], @Result[2]);                         // And Return it from the function
  18. end;


Nun kann ich ja meine Fläche Scrollen. Deshalb muss ich ja auch den zu scrollenden Wert wieder zu den Werten die mir gluunproject zurückgibt mit berechnen. Denn er gibt mir ja immer den Wert von der Momentanen Sicht an.

Code:
  1.   procedure TSpieler.MausDown(x,y: integer);
  2.   var
  3.     Punkt3D: TVector3d;
  4.   begin
  5.     Punkt3D := template_main.GetOpenGLPos(X, Y);
  6.     Clicked_x := Punkt3D[0]-mappos.x;
  7.     Clicked_z := Punkt3D[2]-mappos.z;
  8.   end;


Das mach ich also hier auch.
Mit X Funktioniert das ganze super. Aber mit z, ne.
Und ich kann auch net sagen, warum das net stimmt. ich weiß nur das er meine Fläche nicht dahin setzt, wo er sie hinzusetzen hat.

Vllt. verstehts ja einer von euch.
Kann es evtl daran liegen, das meine Fläche im Winkel von 60° Angezeigt wird?

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 26, 2004 08:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Will mir keiner Helfen,
oder gibts es Missverständnisse?
Soll ich nochmal etwas genauer Erklären, was ist los mit euch :-/

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 26, 2004 11:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Deine Flächen werden doch beim Rendern gescrollt, oder? Und das wird ja über die Modelansichtsmatrix von gluUnproject bereits miteinbezogen, also dürfte es daran nicht liegen, und du musst die Scrollposition auch nicht von den mit gluUnproject ermittelten Werten abziehen.

Ausserdem (ich hab mindestens schon ein dutzend mal was in der Richtung zu gluUnproject gesagt) müssen WinX, WinY und WinZ vom Typ DOUBLE sein...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 31, 2004 20:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Servus

Och verdammt, ich warte seit einigen Tagen auf ne Antwort, aber irgendwie kam meine letzte Nachricht net an :-/

ALSO:

Ja, SOS, das mit dem Double hab ich schon gelesen gehabt, dass du das geschrieben hattest.
Hatte es auch so ausprobiert, ändert nichts.
Die X-Koordinaten, hatten erst gestimmt, nachdem ich den gescrollten wert mit einberechnet hatte.
Also, ohne dies geht es nicht.
Auch die Z-Koordinate, funktioniert so nicht, aber die funktionierte ja so und so nicht.
Ich vermute wirklich das es doch irgendwo am Winkel liegt, denn so mehr ich zu 90° komme, so weniger ändert sich der Z-Wert bei mausänderungen (Was ja verständlich ist) aber ich möchte den Z-Wert von dem wie ich es momentan sehe.
War jetzt vllt. bissl unverständlich :-/
Aber wenn das Quadrat fast senkrecht steht, ändert sich der Z-Wert kaum, das will ich aber nicht.

Ciao.

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 49 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]