2013-05-13 12 views
8

Ho un problema con diversi risultati visivi quando si utilizza un FBO rispetto al framebuffer default:OpenGL: Gli oggetti sono lisce se, di solito disegnato, ma bordate durante il rendering di FBO

rendo la mia scena OpenGL in un oggetto framebuffer, perché lo uso per la color picking. Il fatto è che se rendo la scena direttamente al framebuffer predefinito, l'output sullo schermo è abbastanza fluido, il che significa che i bordi dei miei oggetti sembrano un po 'se fossero anti-alias. Quando eseguo il rendering della scena nell'FBO e successivamente utilizzo l'output per strutturare un quad che si estende su tutta la finestra, gli oggetti hanno bordi molto duri in cui è possibile vedere facilmente ogni singolo pixel colorato che appartiene agli oggetti.

Buono:

dtizcto7.png

Bad:

wy7hg754.png

Al momento non ho idea di quale sia la ragione per questo potrebbe essere. Non sto usando un qualche tipo di anti-aliasing.

Sistema:
Fedora 18 x64
Intel HD Graphics 4000 e Nvidia GT 740M (stesso risultato)

Edit1:

Come affermato da Damon e Steven Lu, c'è probabilmente qualche tipo di antialiasing abilitato dal sistema per impostazione predefinita. Non sono riuscito a capire fino a qui come disabilitare questa funzione.
Il fatto è che ero solo curioso del perché questa impostazione avesse solo un effetto sul framebuffer predefinito e non su quello gestito dall'FBO. Per ottenere i bordi anti-alias anche per l'FBO, probabilmente dovrò implementare il mio metodo AA.

+11

Questo sembra perfettamente normale. Probabilmente hai abilitato MSAA nel pannello di controllo della scheda grasphic (alcune impostazioni come "override application" o "force always on"), motivo per cui il render-to-screen sembra antialias. Il rendering su un FBO non usa il multicampionamento, a meno che tu non dica esplicitamente a OpenGL di farlo aggiungendo allegati multicampo. – Damon

+2

@Damon: risposte. Posta * risposte *, non commenti. –

+0

Cosa c'è di sbagliato nel postare un commento? Se sei così sicuro che il suo commento sia accurato e risponda completamente alla domanda, pubblicala tu stesso. –

risposta

7

Dopo aver disegnato la scena in FBO personalizzato, il livello MSAA definito esternamente non si applica più. È necessario configurare il proprio FBO per disporre di texture multi-campione o di allegati del buffer di rendering che stabiliscono il numero di livelli campione lungo il percorso. Here è un riferimento.

+0

Grazie, ci proverò. – TimV