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

Aktuelle Zeit: Fr Jul 18, 2025 12:40

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glVertex Koordinaten bekommen
BeitragVerfasst: Do Mai 08, 2008 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Hi,

ist ne bekloppte idee, aber kann man in Delphi die x,y,z koordinaten eines gesetzten Vertex auslesen?

ich stell mir da sowas wie glVertex.xyz oder so vor. Ist mir wichtig, weil ich nähmlich ne Matrix schreiben will, bei der ich die xyz koordinaten des aktuellen Vertex brauche.

Im etwa müsste das ja existieren, weil im vertexshader gibts das ja...

würd mich freuen, wenn das jemand weiß! (ich werd schon fast wahnsinnig, weil ich nicht weiß, wie ich das lösen soll)

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
Hallo,

ich programmier zwar noch nicht so lange OpenGL, aber ich kann mir vostellen, dass das nicht wirklich klappt. Du erstellst ja keine Vertices, sondern du zeichnest sie. Und die Daten werden gleich verarbeitet und in den Farbpuffer gespeichert. Normalerweise ist auch der Tiefenpuffer aktiviert - das heißt, dass sogar der Großteil aus dem Farbpuffer schnell wieder verschwindet bzw. gar nicht erst aufgenommen wird.

Du kannst auf jeden Fall die Vertices in ein Array speichern. Aber vielleicht gibt es die Möglichkeit doch, OpenGL zu benutzen - ich kenn sie nicht.

Grüße,
Yogu


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 17:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
eben, es wird sofort verarbeitet, das heißt, dass die Vertex koordinaten mit der modelviewperspectionmatrix multipliziert werden, um sie auf den Bildschirm zu bringen. Das geschieht im shader per ModelViewProjectionMatrix * gl_Vertex. Das ist zumindest der offizielle Term um die fixed function pipeline in dem Bereich nach zustellen. Nun frag ich mich ob es Möglich ist genau die Daten dieses gl_Vertex im Prog abzurufen. Am liebsten wäre mir ein Zeiger, der auf die Daten zeigt.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 17:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das Problem ist, dass glVertex im Prinzip in der Tat eine Art zeichenaufruf ist. Mit dem Aufruf von glVertex werden alle anderen States (Color, VertexAttributes, TexCoords, Normalen usw.) ausgelesen und mit den Koordinaten zusammen irgendwo abgelegt. Beim glEnd dann wird alles gezeichnet.

Daher wird es wohl unmöglich sein, an die Koordinaten ranzukommen - zumal du die Matrizen zwischen glBegin/glEnd eh nicht ändern kannst. Wozu genau brauchst du das eigentlich?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 17:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dafür gibt es in OpenGL den Feedbackpuffer, der u.a. im Redbook dokumentiert sein sollte. Allerdings sollte man beachten dass dieser in Software läuft und daher recht langsam ist, am besten rechnet man also selber um und kann dann direkt optimierte Matrixoperationen nutzen (MMX, SSE, etc.).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 17:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
was ich anstellen will ist etwas komplizierter zu erklären, aber ich versuchs mal:

Die Idee ist es eine Matrix zu entwerfen, die die parallelprojektion ersetzen soll, um eine Panoramaansicht zu rendern.
Dazu möchte ich die kartesischen Weltkoordinaten in polarkoordinaten umwandeln. Das heißt einen Winkel, der auf dem Bildschirm als x interpretiert wird und einer, der als y interpretiert wird. die Entfernung des Punktes zum koordinatenursprung stellt dann die tiefe dar. die Werte werden natürlich alle auf Wertebereiche von 0-1 normiert um ogl gerecht zu werden.

Das Problem an der Sache ist, dass die 4x4matrix, die genau dies tut ganz viele x,y,z beinhaltet, was ja nu ganz doof ist, weil die zum zeitpunkt der festlegung der matrix ja garnicht bekannt sind. deshalb wollte ich einen zeiger, der an die stelle zeigt, wo die Vertex daten liegen zu dem zeitpunkt wie die matrix sie braucht.

Andernfalls muss ich mir überlegen, wie ich meine formeln um die x,y,z erleichtere, woran ich schon ein wenig länger hänge.

Ich hoffe nu habt ihr verstanden, wo das Problem liegt

Edit:
hier mal n link auf eine Seite mit Bildern, ie relativ gut beschreiben, wie es im endeffekt aussehen soll:
http://www.panoversum.eu/galerie/index.php?galerie=bilder/kugelprojektion

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2008 18:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich glaube, ich verstehe.
Dafür würde ich mir eine Kapselungsfunktion von glVertex schreiben.
Dabei wendest du in dieser Funktion deine Matrix auf die Koordinaten an und gibst das dann an OpenGL weiter. Eventuell musst du dir halt auch noch eine extra kopie der Modelviewmatrix halten, falls die vorher mit den Koordiaten multipliziert werden muss. In dem Falle setzt du dann die "echte" Modelviewmatrix auf die Identitätsmatrix, weil du die Multiplikation ja selber machst. Das Problem dabei ist halt, dass du in Shadern auch die Matrix errechnen musst, um wieder auf Weltkoordinaten zurückkommen zu können.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

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