Ich habe ein Problem mit verschiedenen visuellen Ergebnissen, wenn ich einen FBO im Vergleich zum Standard-Framebuffer verwende:
Ich rende meine OpenGL-Szene in ein Framebuffer-Objekt, weil ich dies für die Farbauswahl verwende. Die Sache ist, dass, wenn ich die Szene direkt auf den Standard-Framebuffer rendere, die Ausgabe auf dem Bildschirm ziemlich glatt ist, was bedeutet, dass die Kanten meiner Objekte ein bisschen wie bei einem Anti-Aliasing aussehen. Wenn ich die Szene in den FBO rendere und danach die Ausgabe verwende, um ein Quad zu texturieren, das das gesamte Ansichtsfenster überspannt, haben die Objekte sehr harte Kanten, an denen Sie einfach jedes einzelne farbige Pixel sehen können, das zu den Objekten gehört.
Gut:
Schlecht:
Im Moment habe ich keine Ahnung, was der Grund dafür sein könnte. Ich verwende keine Art von Anti-Aliasing.
System:
Fedora 18 x64
Intel HD Graphics 4000 und Nvidia GT 740M (gleiches Ergebnis)
Bearbeiten1:
Wie von Damon und Steven Lu erwähnt, gibt es wahrscheinlich eine Art Anti-Aliasing, das vom System standardmäßig aktiviert wird. Ich konnte bisher nicht herausfinden, wie ich diese Funktion deaktivieren kann.
Die Sache ist, dass ich nur neugierig war, warum diese Einstellung nur auf den Standard-Framebuffer und nicht auf den vom FBO behandelten Einfluss hatte. Um auch Anti-Aliasing-Kanten für den FBO zu erhalten, muss ich wahrscheinlich meine eigene AA-Methode implementieren.
Sobald Sie Ihre Szene in benutzerdefiniertes FBO gezeichnet haben, gilt die extern definierte MSAA-Stufe nicht mehr. Sie müssen Ihren FBO so konfigurieren, dass die Multi-Sample Textur- oder Renderpuffer-Anhänge die Anzahl der Probenebenen auf dem Weg festlegen. Hier ist eine Referenz.