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

Aktuelle Zeit: Fr Jun 20, 2025 18:59

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Jul 31, 2012 09:28 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Hallo,

ich wollte mal nachfragen was so das übliche verfahren ist, um z.b. AABBs zu rendern ohne den Immediate Mode zu nutzen.
Oder z.b. nen Gitter rendern, etc. Mit dem immediate mode ist das ziemlich simpel, aber mit VBO und Shadern würden mir nur 2 Sachen einfallen:

- VBO rendern mit GL_LINE_LOOP, das die größe 1 x 1 x 1 und dann mittels Modelview Matrix die Skalierung der AABB multiplizieren und die Position dazurechnen.

- Das ganze mit einem Geometry Shader irgendwie rendern, nur wüsste ich da nicht wo man ansetzt... Dachte da vielleicht, das ich nen einfachen Point (Mittelpunkt vom AABB) Rendere und im Geo shader, die AABB größe/position mitgebe und dann die Line_Loops Generiere??? Könnte das Funktionieren? Normalen kann man ja so auch rendern, nur wird da ja das gesamte Mesh gerendert.

Wie gebe ich da die Line Size mit? oder muss ich das selbst mit dem Frag-Shader selbst berechnen?



Achja, das wichtigste Frage überhaupt, wie vereine ich eigentlich so debug Renderkram im GBuffer (Deferred Rendering)?
Einfach im Diffuse target dazu rendern, aber per Material flag nicht beleuchten?

Fragen über fragen.


Danke,
Final


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 31, 2012 09:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Finalspace hat geschrieben:
Achja, das wichtigste Frage überhaupt, wie vereine ich eigentlich so debug Renderkram im GBuffer (Deferred Rendering)?
Einfach im Diffuse target dazu rendern, aber per Material flag nicht beleuchten?

Entweder nicht beleuchten oder einfach wie auch Transparente Objekte im nachhinein erst zeichnen.
Solange du den Depth Buffer hast kannst du ja problemlos nach dem Deferred Rendering noch Sachen in die Scene rendern.

Aya


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 31, 2012 10:15 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Jo das mti dem Deferred Rendering hat sich erledigt. Während ich im GBuffer pass bin, kann ja beliebigen kram noch in den Color Buffer schreiben.
Über Immediate funktioniert das auch schon super, wie erwartet... aber mit modernen Mitteln habe ich noch keine wirkliche idee.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 31, 2012 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Wenn es nur zu Debugging zwecken ist, erstelle ich mir für sowas einfach ein extra VBO dafür.
Natürlich ist das vermutlich nicht das beste was die Performance angeht, aber das ist bei Debug zwecken in der Regel ja egal.

Also ich erstelle mir einen VBO für einen Würfel (8 Vertices) und update die Vertex-Positionen für jede BoundingBox so wie ich sie brauche, also quasi der Immediate Mode in nen VBO gebastelt :mrgreen:

Wenn es um Performance geht und die BoundingBoxen sich nicht ständig ändern ist es vermutlich geschickter alle Bounding Boxen in einen statischen VBO zu packen (den man dann ggf. mit Range Draw zeichnet wenn man nur manche braucht) oder via Geo Shader etc..

Aya


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 31, 2012 16:07 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ja, das mit dem VBO ist wohl die einfachste variante. Danke für den tip.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 31, 2012 20:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Debug daten kannst du auch nicht so performance kritisch betrachten und einfach 2-3 primitive in ein vbo quetschen. 2*2*2 unit cube, sphere, cross sollten eigentlich reichen, die kannst du dann über eine matrix entsprechend auf die richtige größe skalieren und muss nicht an dem vbo fummeln. Des weiterem liegen alle debug primitiven in einem vbo, damit sparst du dir den switch und shadermässig würde ich ein unlit green oder so benutzten.
Es gibt von Nv auch schicke line extensions, um muster auf die linien zu malen.
Wenn du alles mit einmal renderst, dann ist das ausreichend performant :)

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


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


Wer ist online?

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.

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