11
votes

Fragment Shaders: Variables de sortie

Lecture de la spécification GLSL 1.40:

Les sorties de fragments ne peuvent être que flotter, vecteurs de points flottants, signés ou nombres entiers non signés ou vecteurs entier, ou des tableaux de ceux-ci. Matrices et Les structures ne peuvent pas être émises. Fragment Les sorties sont déclarées comme dans le Exemples suivants:

Out Vec4 FragmentColor; Sortir la luminosité UINT;

La couleur de fragment est définie écrit GL_FRAGCOLOR ... Est-ce raison? Quelqu'un pourrait-il éclaircir mes idées sur ces sorties? Puis-je écrire uniquement "FragmentColor" de l'exemple pour déterminer la couleur du fragment? Puis-je les lire ("luminosité" par exemple)?


0 commentaires

3 Réponses :


0
votes

Je veux donner quelques exemples: xxx


0 commentaires

4
votes

Votre exemple a 2 sorties. Ils ont des emplacements FBO correspondants associés après la liaison de programme GLSL. Vous pouvez les rediriger à l'aide de GLBindFRAGDatalocation .

Une fois que vous avez activé le shader et la liaison FBO, tout dépend d'un masque de tirage, défini par GLDRAWBUFFERS . Par exemple, si vous avez passé gl_color_attachment0 et gl_color_atchment2 là, cela signifierait que l'index de sortie 0 ira à la pièce jointe 0 et l'index de sortie 1 irait à la pièce jointe de couleur 2 .


0 commentaires

17
votes

La variable de sortie globale GL_FRAGCOLOR est obsolète après la version 120 de GLSL. Maintenant, vous devez lui donner un nom et taper vous-même, comme dans votre exemple. En ce qui concerne plusieurs sorties, Ce lien vous donne des informations sur la cartographie: http://www.opengl.org/wiki/glsl_Objects# Programme_linking

(et j'ai trouvé ce lien à: http: // www. opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&number=270999 )

J'espère que cela vous aidera! : D

ooops! Je vois que Kvark a donné les informations pertinentes. Quoi qu'il en soit, peut-être que vous avez également quelque chose de mon texte aussi.


0 commentaires