2010-11-13 9 views

risposta

4

Sì, è possibile scrivere su gl_FragData, che è una matrice di output (la dimensione dipende dall'implementazione). O con le versioni più recenti di GL, sia gl_FragColor che gl_FragData sono deprecate e dichiarate le vostre variabili out per lo shader di frammenti su cui scrivere. Dichiarare più di tali out vars per più buffer di output.

+0

Grazie. Mi piacerebbe vedere un esempio di codice di come questo sarebbe fatto in GLSL e forse qualche pseudo codice per l'applicazione host se questo è il termine giusto. – Moss

+1

In realtà, l'ho capito da solo. Ho appena dovuto dire "variando vec4 Color1, Color2" ecc. In alto e questo sembrava collegarsi automaticamente alla matrice di trame che stavo già passando. E poi impostare quelle variabili su qualcosa da qualche parte all'interno di void main(). – Moss

+1

È supportato in OpenglES 2.0? –

0

Non so se questo è esattamente quello che stai cercando di fare, ma con Frame Buffer Objects (FBOs) puoi disegnare simultaneamente su più buffer di colore.

All'interno dello shader, tuttavia, sarà ancora come se si stesse scrivendo un frammento. Ossia, lo shader non è a conoscenza di quanti allegati ha l'FBO.

0

Sì. Noi possiamo. MA Notare che gl_FragData non è più supportato in GLSL 4.0. Specificare la posizione come:

glBindFragDataLocation(programHandle, 0, "FragColor"); 

.....

spero si poteva leggere il libro di GLSL 4.0 ombreggiatura linguaggio libro di cucina.

+0

Penso che le posizioni esplicite siano preferite su 'glBindFragDataLocation' – RecursiveExceptionException

Problemi correlati