Ich habe eine Punktwolke, die auf dem Bildschirm gerendert wird. Jeder Punkt hat seine Position und Farbe sowie eine ID.
Ich wurde gebeten, die IDs für jeden Punkt auf eine Textur zu rendern, also erstellte ich einen FBO und fügte zwei Texturen hinzu, eine für Farbe und eine für Tiefe. Ich habe die erforderlichen VAO und VBO für dieses Off-Screen-Rendering erstellt und für jeden Punkt seine Position und ID hochgeladen.
Sobald das Rendern an den FBO abgeschlossen ist, lese ich die Pixel der Farbtextur mit, um glReadPixels()
zu sehen, wie die Werte lauten, aber sie scheinen alle gelöscht zu sein, dh der Wert, den sie haben, ist der gleiche wieglClearColor()
.
Gibt es eine Möglichkeit, um zu debuggen, was an der Farbtextur meines FBO gerendert wird? Alle Tipps, die Sie zur Verfügung stellen können, sind sehr willkommen.
Ich habe mehrere Anwendungen / APIs / Bibliotheken getestet, um Daten von FBOs in Anwendungen abzurufen, die beispielsweise gbuffer verwenden. Nach Monaten des Leidens entdeckte ich, dass Apitrace auf Github verfügbar ist, um OpenGL, Direct3D und WebGL zu debuggen. Ich habe in Windows und Linux ohne Probleme verwendet.
Ich hoffe, das könnte nützlich für Sie sein.
quelle
Zusätzlich zur Antwort von cifz besteht eine weitere Möglichkeit, FBOs zu visualisieren, die nicht viel Code kosten, darin, mit glBlitFramebuffer () Pixel von einem Framebuffer in ein Fenster zu übertragen.
Es gibt ein paar offensichtliche "Fallstricke", bei denen HDR-Puffer wahrscheinlich nicht die Art und Weise darstellen, wie Sie es erwarten, Sie können Tiefen- / Schablonenpuffer wahrscheinlich nicht auf die offensichtliche Art und Weise "sehen", und wenn die Größe des FBO nicht stimmt Die Vergrößerungs- / Verkleinerungsmethode ist möglicherweise äußerst naiv und passt nicht zum zu überblendenden Bereich.
Aber wie schnell und schmutzig Hacks gehen, es ist ziemlich gut.
quelle