2013-05-13 7 views
8

Ich habe ein Problem mit verschiedenen visuellen Ergebnissen, wenn eine FBO im Vergleich zum Standard-Framebuffer mit:OpenGL: Objekte sind glatt, wenn normalerweise gezeichnet, aber umrandeten, wenn sie FBO Rendering

ich meine OpenGL Szene in ein Framebuffer-Objekt machen, weil ich das 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 anschließend die Ausgabe verwende, um ein Quad zu texturieren, das den gesamten Darstellungsbereich umfasst, haben die Objekte sehr harte Kanten, an denen Sie einfach jedes einzelne farbige Pixel sehen können, das zu den Objekten gehört.

Gut:

dtizcto7.png

Bad:

wy7hg754.png

Im Moment habe ich keine Ahnung, was der Grund dafür sein könnte. Ich verwende keine Art von Anti-Aliasing.

System:
Fedora 18 x 64
Intel HD Graphics 4000 und Nvidia GT 740M (gleiches Ergebnis)

Edit1:

Wie von Damon und Steven Lu erklärt, gibt es wahrscheinlich eine Art Anti-Aliasing, das standardmäßig vom System aktiviert wird. Ich konnte bisher nicht herausfinden, wie man diese Funktion deaktiviert.
Die Sache ist, dass ich nur neugierig war, warum diese Einstellung nur eine Auswirkung auf den Standard-Framebuffer hatte und nicht auf den, der vom FBO gehandhabt wurde. Um auch Anti-Aliasing-Kanten für den FBO zu erhalten, muss ich wahrscheinlich meine eigene AA-Methode implementieren.

+11

Das sieht ganz normal aus. Wahrscheinlich haben Sie MSAA im Steuerfeld der Grafikkarte aktiviert (einige Einstellungen wie "Anwendung überschreiben" oder "immer drücken"), weshalb der Render-to-Screen antialiased aussieht. Beim Rendern auf einen FBO wird kein Multisampling verwendet, es sei denn, Sie weisen OpenGL explizit dazu an, Multisample-Anhänge hinzuzufügen. – Damon

+2

@Damon: Antworten. Post * Antworten *, keine Kommentare. –

+0

Was ist los mit dem Posten eines Kommentars? Wenn du dir sicher bist, dass sein Kommentar richtig ist und die Frage vollständig beantwortet, poste es selbst. –

Antwort

7

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 festlegen. Here ist eine Referenz.

+0

Danke, ich werde das ausprobieren. – TimV