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

Aktuelle Zeit: Do Jul 17, 2025 14:40

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Macht keinen Unterschied :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hab mir jetzt mal deinen Quellcode angesehen,und der ist für deinen Fall evtl. gar nicht geeignet.
Damit gluUnproject dir nen brauchbaren Wert zurückliefert, musst du dieser Funktion natürlich auch einen gültigen Z-Wert mitgeben, den du vorher über glReadPixels (GL_DEPTH_COMPONENT) an der Mausposition auslesen musst.Danach übergibst du diesen dann (wie du es mit X und Y auch machst) ang gluUnproject, und schon solltest du einen brauchbaren Wert bekommen (unter der Voraussetzung das der Z-Wert den du mit glReadPixels auch gültig ist, sprich ein Objekt an dieser Stelle liegt).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Wenn ich das richtig verstehe muss das dann so aussehen:
Code:
  1.  
  2. var z:TGLDouble;
  3.  
  4. glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,@z);
  5. gluUnProject(x,Viewport[3]-y,z, modelmatrix, projmatrix, viewport, @ox, @oy, @oz);
  6.  

Es tut sich aber imer noch nichts. Auch nicht wenn ich GL_DOUBLE statt GL_FLOAT schreibe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Der Fehler tritt übrigens schon ganz am Anfang auf.Im Moment habe ich nur folgende Zeilen:
Code:
  1.  
  2.       glGetDoubleV(GL_MODELVIEW_MATRIX, addr(modelmatrix));
  3.       glGetDoubleV(GL_PROJECTION_MATRIX, addr(projmatrix));
  4.       glGetIntegerV(GL_VIEWPORT, addr(viewport));
  5.  
  6.       glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,@z);
  7.       gluUnProject(x,Viewport[3]-y,z, modelmatrix, projmatrix, viewport, @ox, @oy, @oz);
  8.       v1.x := ox; v1.y := oy; v1.z := oz;
  9.       memo1.lines.add('v1.x = '+floattostr(v1.x));
  10.       memo1.lines.add('v1.y = '+floattostr(v1.y));
  11.       memo1.lines.add('v1.z = '+floattostr(v1.z));
  12.  

Hier haben v1.x, v1.y und v1.z schon den Wert "NAN"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1. glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,@z);

Da liegt dein Fehler.OpenGLs Koordinatensystem hat seinen Ursprung nicht oben links, sondern unten links.Es muss also so aussehen :
Code:
  1. glReadPixels(x,Viewport[3]-y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,@z);

Du hast bisher also dann wahrscheinlich nämlich einen Tiefenwert an einer Stelle auslesen wollen, an der "nichts" in den Tiefenpuffer geschrieben wurde,weshalb du auch kein brauchbares Ergebnis bekommen hast.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Geht trotzdem nicht... :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann liegt dein Fehler irgendwo anders.Hab gluUnproject auch schonmal benutz,habs genauso gemacht wie ichs beschrieben hab und es hat einwandfrei funktioniert.
Also machst du vielleicht vorher schon was falsch.Bist du dir auch sicher,das du überhaupt ein Pixelformat mit nem Tiefenpuffer anforderst?Und ist der Renderkontext aktiv wenn du gluUnproject aufrust?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 04, 2003 17:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Son of Satan hat geschrieben:
Und ist der Renderkontext aktiv wenn du gluUnproject aufrust?

Genau das war es. Jetzt geht es.
Vielen Dank! :D


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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 | 14 Queries | GZIP : On ]