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

Aktuelle Zeit: Fr Jul 18, 2025 12:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Mär 26, 2008 11:00 
Offline
DGL Member

Registriert: Di Mär 25, 2008 11:19
Beiträge: 3
Wohnort: nähe Stuttgart
Hallo liebe DGL-Community.

Ich steck gerade beim Tesselieren. Ich wollte VertexArrays verwenden, da sich die Geometrie meiner Objekte zur Laufzeit ändert. Allerdings müssen die Objekte vor dem ersten zeichnen durch den Tesselator. Um jetzt nicht riesige VertexArrays zu bekommen wollte ich mit dem IndexPointer die Vertices referenzieren. hat jemand eine Idee wie ich innerhalb der Tesselierung möglichst elegant die indexliste erzeugen kann?


Vielen Dank im Vorraus :)

Lars Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 26, 2008 11:23 
Offline
DGL Member

Registriert: Di Mär 25, 2008 11:19
Beiträge: 3
Wohnort: nähe Stuttgart
Hat sich eben erledigt, interessant aber das es so funktioniert:
Code:
  1.  
  2.     gluTessCallback(FTesselator, GLU_TESS_VERTEX, @MyglVertex3dv);
  3. // ...
  4. // als zweiter Parameter wird TGLVectord3 erwartet, aber in MyglVertexdv wird der letzte Parameter übergeben
  5. // MyglVertex3dv ist als nested procedure mit stdCall definiert
  6.     gluTessVertex(FTesselator, TGLArrayD3(LoopEdge.vertex.VertexData.v.v), @LoopEdge.vertex);
  7.  
  8.  


Ich übergeb also dem Vertex-callback ein Pointer auf mein Vertex-Objekt, das unter anderem auch eine eindeutige ID besitzt, über die ich mein Indexarray füllen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 26, 2008 18:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
could you explain this a bit more? Example?

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 27, 2008 09:47 
Offline
DGL Member

Registriert: Di Mär 25, 2008 11:19
Beiträge: 3
Wohnort: nähe Stuttgart
Ursprünglicher Ansatz der Idee war, nicht mehr mit Displaylisten zu arbeiten, sondern mit Vertex-Arrays. Ich weiß, ist mittlerweile auch schon veraltete Technik, aber ich hab mich noch nie mit VBO's beschäftigt, und hatte keine Lust / Zeit mich daran zu setzen.
Da ich eine Objektorientierte Struktur meiner Daten habe, in der einzelne Flächen als Polygon (sowohl convex als auch concave) vorkommen, benutze ich den GLU-Tesselator um die Flächen im OpenGL darstellen zu können. Das Ergebnis des Tesselators möchte ich aber nicht direkt in eine Displayliste speichern, sondern in eine Indexliste speichern um effizient das Vertexarray nutzen zu können.
Dafür nutze ich jetzt den VertexCallback, der im 3. Parameter einen Zeiger auf "User-Data" beinhalten kann. In vielen implementationen wird da einfach die selben Daten übergeben die der Callback auch über den 2. Parameter übergeben bekommt, in meinem Fall wird aber ein Zeiger auf das komplette Objekt das den Vertex repräsentiert übergeben, und so kann ich bequem im Callback den Index in eine Liste speichern.

Was ich merkwürdig finde ist, das ich nicht den GLU_TESS_VERTEX_DATA callback anmelde, sondern "nur" den GLU_TESS_VERTEX callback,
dessen Methodendeklaration nur einen Parameter erwartet und ich davon ausging das hier der 2. Parameter von gluTessVertex übergeben wird, und nicht wie in meinem Fall der 3. Parameter.


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


Wer ist online?

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.

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